0% found this document useful (0 votes)
9 views4 pages

IbisPaint SystemChecker Function Analysis

The document contains assembly code for a function named 'verifySignatures' in the 'SystemChecker' class of the 'ibispaint' namespace. It involves various operations such as loading values, conditional branching, and function calls to verify certain signatures. The function appears to handle error checking and results based on the verification process.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views4 pages

IbisPaint SystemChecker Function Analysis

The document contains assembly code for a function named 'verifySignatures' in the 'SystemChecker' class of the 'ibispaint' namespace. It involves various operations such as loading values, conditional branching, and function calls to verify certain signatures. The function appears to handle error checking and results based on the verification process.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd

|

0x012fae40 sub sp, sp, 0x50 |ulong


[Link]::SystemChecker::verifySignatures_std::__ndk1::vector_glape::String__s
td::__ndk1::allocator_glape::String____const_
| (int64_t *param_1)
|
|{
| int *piVar1;
| uint8_t uVar2;
| int64_t iVar3;
| char cVar4;
| ulong uVar5;
| uint64_t *puVar6;
| uint64_t uVar7;
| int64_t *piVar8;
| uint8_t *puVar9;
| uint8_t *puVar10;
| uint8_t *puVar11;
| uint64_t uVar12;
| int *piVar13;
| uchar *puVar14;
| uchar auVar15 [16];
| uchar auVar16 [12];
| uint8_t auStack_50 [8];
| uint64_t uStack_48;
| int *piStack_40;
| int64_t iStack_38;
|
0x012fae40 sub sp, sp, 0x50 |
//ibispaint::SystemChecker::verifySignatures(std::__ndk1::vector<glape::String,
0x012fae40 sub sp, sp, 0x50 |
//std::__ndk1::allocator<glape::String> > const&)
0x012fae54 mrs x20, tpidr_el0 | iVar3 = tpidr_el0;
0x012fae58 ldr x8, [x20, 0x28] | iStack_38 = *(iVar3 + 0x28);
0x012fae68 [Link] 0x12faf2c | if (*param_1 == param_1[1]) {
0x012faf44 mov w2, 5 | puVar9 = 0x5;
0x012faf48 stlr w9, [x8] |
*_reloc.ibispaint::SystemChecker::result = 1;
0x012faf50 bl 0x2464400 |
func_0x02464400(_reloc.ibispaint::SystemChecker::error,L"E6-01");
0x012faf54 mov w0, wzr | uVar5 = 0;
| }
| else {
0x012fae90 movk x2, 0x4d96, lsl 48 | puVar9 =
0x4d96721ccc556c27;
0x012fae94 bl 0x24759d0 |
func_0x024759d0(auStack_50,0xcaeeb7,0x40);
0x012fae98 ldp x8, x9, [x19] | puVar10 = *param_1;
0x012faea0 [Link] 0x12fafc8 | if (puVar10 != param_1[1])
{
0x012faeb8 csel x10, x11, x12, eq | uVar7 = auStack_50[0]
>> 1;
0x012faeb8 csel x10, x11, x12, eq | piVar1 = auStack_50 |
4;
0x012faeb8 csel x10, x11, x12, eq | if ((auStack_50[0] &
1) != 0) {
0x012faebc csel x11, x14, x13, eq | uVar7 = uStack_48;
0x012faebc csel x11, x14, x13, eq | piVar1 =
piStack_40;
| }
| do {
0x012faed0 ldrb w12, [x8] | uVar2 = *puVar10;
0x012faee0 csel x13, x14, x13, eq | uVar12 = uVar2 >>
1;
0x012faee0 csel x13, x14, x13, eq | if ((uVar2 & 1) !=
0) {
0x012faee0 csel x13, x14, x13, eq | uVar12 =
*(puVar10 + 8);
| }
0x012faee8 [Link] 0x12faf5c | if (uVar12 !=
uVar7) {
|code_r0x012faf5c:
0x012faf68 stlr w9, [x8] |
*_reloc.ibispaint::SystemChecker::result = 1;
0x012faf7c mov w2, 5 | puVar9 = 0x5;
0x012faf80 bl 0x2464400 |
func_0x02464400(_reloc.ibispaint::SystemChecker::error,L"E6-02");
0x012faf84 mov w0, wzr | uVar5 = 0;
0x012faf84 mov w0, wzr | goto
joined_r0x012faf8c;
| }
0x012faeec cbz x10, 0x12faec4 | if (uVar7 != 0) {
0x012faefc csel x12, x14, x13, eq | puVar11 =
puVar10 + 4;
0x012faefc csel x12, x14, x13, eq | uVar12 =
uVar7;
0x012faefc csel x12, x14, x13, eq | piVar13 =
piVar1;
0x012faefc csel x12, x14, x13, eq | if ((uVar2 &
1) != 0) {
0x012faefc csel x12, x14, x13, eq | puVar11 =
*(puVar10 + 0x10);
| }
| do {
0x012faf14 [Link] 0x12faf5c | if
(*piVar13 != *puVar11) goto code_r0x012faf5c;
0x012faf18 subs x13, x13, 1 | uVar12 =
uVar12 - 1;
0x012faf24 [Link] 0x12faf08 | puVar11 =
puVar11 + 4;
0x012faf24 [Link] 0x12faf08 | piVar13 =
piVar13 + 1;
0x012faf24 [Link] 0x12faf08 | } while
(uVar12 != 0);
| }
0x012faec4 add x8, x8, 0x18 | puVar10 = puVar10
+ 0x18;
0x012faecc [Link] 0x12fafc8 | } while (puVar10 !=
param_1[1]);
| }
0x012fafd0 mov w0, 1 | uVar5 = 1;
0x012fafd8 stlr w9, [x8] |
*_reloc.ibispaint::SystemChecker::result = 0xffffffff;
|joined_r0x012faf8c:
0x012faf8c tbz w8, 0, 0x12fafa4 | if ((auStack_50[0] & 1) !=
0) {
0x012faf9c bl 0x2464120 |
func_0x02464120(piStack_40);
| }
| }
0x012fafb0 [Link] 0x12fb014 | if (*(iVar3 + 0x28) ==
iStack_38) {
0x012fafc4 ret | return uVar5;
| }
0x012fb014 bl [Link].__stack_chk_fail | auVar15 =
func_0x024641a0(uVar5);
0x012fb014 bl [Link].__stack_chk_fail | puVar6 = auVar15._0_8_;
0x012fb034 bl [Link] | uVar7 =
func_0x02464310(auVar15._8_8_);
0x012fb03c [Link] 0x12fb0b0 | if (0xfffffffffffffff7 <
uVar7) {
0x012fb0b4 bl 0x109b9e0 | auVar16 =
func_0x0109b9e0(puVar6);
0x012fb0b4 bl 0x109b9e0 | piVar8 = auVar16._0_8_;
0x012fb0b8 cbz x0, 0x12fb148 | uVar5 = 0;
0x012fb0b8 cbz x0, 0x12fb148 | if (piVar8 != NULL) {
0x012fb0e0 blr x8 | cVar4 = (**(*piVar8 +
0x720))();
0x012fb0e8 [Link] 0x12fb138 | if (cVar4 == '\0') {
0x012fb138 mov w0, wzr | uVar5 = 0;
| }
| else {
0x012fb0f8 blr x8 | (**(*piVar8 +
0x88))(piVar8);
0x012fb108 stlr w20, [x8] |
*_reloc.ibispaint::SystemChecker::result = auVar16._8_4_;
0x012fb124 csel x1, x8, x11, eq | uVar7 = *puVar9 >>
1;
0x012fb124 csel x1, x8, x11, eq | puVar10 = puVar9 +
4;
0x012fb124 csel x1, x8, x11, eq | if ((*puVar9 &
1) != 0) {
0x012fb128 csel x2, x9, x10, eq | uVar7 =
*(puVar9 + 8);
0x012fb128 csel x2, x9, x10, eq | puVar10 =
*(puVar9 + 0x10);
| }
0x012fb12c bl 0x2464400 |
func_0x02464400(_reloc.ibispaint::SystemChecker::error,puVar10,uVar7);
0x012fb130 mov w0, 1 | uVar5 = 1;
| }
| }
0x012fb148 ret | return uVar5;
| }
0x012fb048 [Link] 0x12fb05c | if (uVar7 < 0x17) {
0x012fb050 strb w8, [x19], 1 | puVar14 = puVar6 + 1;
0x012fb050 strb w8, [x19], 1 | *puVar6 = uVar7 << 1;
0x012fb054 cbnz x20, 0x12fb08c | if (uVar7 == 0) {
0x012fb058 b 0x12fb09c | uVar5 = 0;
0x012fb058 b 0x12fb09c | goto code_r0x012fb09c;
| }
| }
| else {
0x012fb06c csel x8, x8, x9, eq | uVar12 = (uVar7 &
0xfffffffffffffff8) + 8;
0x012fb06c csel x8, x8, x9, eq | if ((uVar7 | 7) != 0x17) {
0x012fb06c csel x8, x8, x9, eq | uVar12 = uVar7 | 7;
| }
0x012fb078 bl 0x24641d0 | puVar14 =
func_0x024641d0(uVar12 + 1);
0x012fb080 stp x20, x0, [x19, 8] | puVar6[1] = uVar7;
0x012fb080 stp x20, x0, [x19, 8] | puVar6[2] = puVar14;
0x012fb084 str x8, [x19] | *puVar6 = uVar12 + 1 | 1;
| }
0x012fb098 bl [Link] | uVar5 =
func_0x024645a0(puVar14,auVar15._8_8_,uVar7);
|code_r0x012fb09c:
0x012fb09c strb wzr, [x19, x20] | puVar14[uVar7] = 0;
0x012fb0ac ret | return uVar5;
|}
|

You might also like