Function at 0x350899d0
Capabilities:
Encode data using base64
Parse credit card information

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x14
and dword [ebp - 8], 0
and dword [ebp - 4], 0
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, ecx
jmp 0x35089a06
cmp dword [ebp - 4], 0
je 0x35089a02
test byte [ebp + 0x18], 0x30
je 0x35089a1d
push dword [ebp - 4]
call fcn.3505f971
test eax, eax
je 0x35089a1d
add dword [esi], ebx
mov ecx, edi
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
push dword [esi]
call fcn.3506ff56
mov ebx, eax
mov dword [ebp - 0xc], ebx
test ebx, ebx
jne 0x350899ea
mov eax, dword [ebp + 0x10]
xor edx, edx
cmp eax, edx
je 0x35089a2a
mov ecx, dword [esi]
mov dword [eax], ecx
cmp ebx, edx
jne 0x35089a38
mov eax, dword [ebp + 8]
mov dword [eax], edx
jmp 0x3508a603
mov ecx, dword [ebp - 4]
cmp ecx, 0x27
ja 0x35089f68
je 0x35089f4c
mov eax, ecx
sub eax, 9
je 0x35089ec0
dec eax
je 0x35089e23
sub eax, 3
je 0x35089e23
sub eax, 0x13
je 0x35089ec0
dec eax
dec eax
je 0x35089dff
sub eax, 4
jne 0x35089f8e
test dword [ebp + 0x18], 0xf7d
jne 0x35089f8e
mov eax, dword [esi]
mov ebx, dword [ebp + 8]
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0xc]
add dword [esi], eax
mov eax, dword [esi]
lea ecx, [ebp - 4]
push ecx
push dword [ebp + 0x14]
mov ecx, edi
push eax
mov dword [ebp + 0xc], 1
call fcn.3506ff56
mov dword [ebp - 0xc], eax
test eax, eax
je 0x35089d75
cmp dword [ebp - 4], 0x23
jne 0x35089c91
add dword [esi], eax
mov eax, dword [esi]
lea ecx, [ebp - 4]
push ecx
push dword [ebp + 0x14]
mov ecx, edi
push eax
mov dword [ebp + 0xc], 2
call fcn.3506ff56
test eax, eax
je 0x35089d75
mov ecx, dword [ebp - 4]
lea edx, [ecx - 0x30]
cmp edx, 9
ja 0x35089b32
and dword [ebp + 8], 0
mov edx, dword [ebp + 8]
add dword [esi], eax
imul edx, edx, 0xa
mov eax, dword [esi]
inc dword [ebp + 0xc]
lea ecx, [edx + ecx - 0x30]
mov dword [ebp + 8], ecx
lea ecx, [ebp - 4]
push ecx
push dword [ebp + 0x14]
mov ecx, edi
push eax
call fcn.3506ff56
test eax, eax
jbe 0x35089be5
mov ecx, dword [ebp - 4]
lea edx, [ecx - 0x30]
cmp edx, 9
jbe 0x35089af7
jmp 0x35089be8
cmp ecx, 0x78
je 0x35089b40
cmp ecx, 0x58
jne 0x35089d75
add dword [esi], eax
mov eax, dword [esi]
lea ecx, [ebp - 4]
push ecx
push dword [ebp + 0x14]
mov ecx, edi
push eax
mov dword [ebp + 0xc], 3
call fcn.3506ff56
test eax, eax
je 0x35089d75
mov ecx, dword [ebp - 4]
lea edx, [ecx - 0x30]
cmp edx, 9
jbe 0x35089b81
lea edx, [ecx - 0x41]
cmp edx, 5
jbe 0x35089b81
lea edx, [ecx - 0x61]
cmp edx, 5
ja 0x35089d75
and dword [ebp + 8], 0
jmp 0x35089b8a
mov ecx, dword [ebp - 4]
lea edx, [ecx - 0x30]
cmp edx, 9
ja 0x35089ba2
mov edx, dword [ebp + 8]
add edx, 0xfffffffd
shl edx, 4
add edx, ecx
mov dword [ebp + 8], edx
jmp 0x35089bcb
lea edx, [ecx - 0x41]
cmp edx, 5
ja 0x35089bb6
mov edx, dword [ebp + 8]
shl edx, 4
lea ecx, [edx + ecx - 0x37]
jmp 0x35089bc8
lea edx, [ecx - 0x61]
cmp edx, 5
ja 0x35089be8
mov edx, dword [ebp + 8]
shl edx, 4
lea ecx, [edx + ecx - 0x57]
mov dword [ebp + 8], ecx
add dword [esi], eax
mov eax, dword [esi]
inc dword [ebp + 0xc]
lea ecx, [ebp - 4]
push ecx
push dword [ebp + 0x14]
mov ecx, edi
push eax
call fcn.3506ff56
test eax, eax
ja 0x35089b87
mov ecx, dword [ebp - 4]
cmp ecx, 0x3b
jne 0x35089bf2
add dword [esi], eax
inc dword [ebp + 0xc]
test dword [ebp + 0x18], 0x2000
je 0x35089c12
mov eax, dword [edi + 0x15bc]
and eax, 0x4000000
or eax, 0x8000000
shr eax, 0x1a
mov dword [ebx], eax
jmp 0x35089c43
test dword [edi + 0x15bc], 0x4000000
je 0x35089c3d
mov eax, dword [ebp + 8]
cmp eax, 0x3c
je 0x35089c3d
cmp eax, 0x3e
je 0x35089c3d
cmp eax, 0x26
je 0x35089c3d
cmp eax, 0x22
je 0x35089c3d
mov dword [ebx], 3
jmp 0x35089c43
mov dword [ebx], 0xb
mov eax, dword [ebp + 8]
lea ecx, [eax - 0x10000]
cmp ecx, 0xfffff
ja 0x35089c8d
push eax
mov dword [ebp + 0x14], 1
call fcn.350899a0
mov ecx, dword [ebp + 0x14]
mov dword [ebx + 0x14], eax
mov dword [ebx + 0x1c], 0x4b0
mov dword [ebx + 0x18], ecx
mov eax, dword [esi]
sub eax, dword [ebx + 4]
mov dword [ebx + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [ebx + 0xc], eax
mov eax, dword [edi + 0x114c]
mov dword [ebx + 0x10], eax
jmp 0x3508a603
xor ecx, ecx
jmp 0x35089c64
push dword [ebp - 4]
call fcn.3505f921
test eax, eax
je 0x35089d75
mov eax, dword [esi]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0xc]
add dword [esi], eax
mov eax, dword [esi]
inc dword [ebp + 0xc]
lea ecx, [ebp - 4]
push ecx
push dword [ebp + 0x14]
mov ecx, edi
push eax
call fcn.3506ff56
mov dword [ebp - 0xc], eax
test eax, eax
jbe 0x35089cd2
push dword [ebp - 4]
call fcn.3505f949
test eax, eax
jne 0x35089ca6
cmp dword [ebp - 4], 0x3b
mov eax, dword [esi]
jne 0x35089ce4
mov ecx, dword [ebp - 0xc]
add ecx, eax
inc dword [ebp + 0xc]
mov dword [esi], ecx
sub eax, dword [ebp + 0x10]
push dword [edi + 0x114c]
mov dword [ebp - 0xc], eax
push eax
push dword [ebp + 0x10]
call fcn.3505f4ca
mov dword [ebp - 0x14], eax
movsx eax, word [eax*2 + 0x3501af88]
mov dword [ebp + 8], eax
cmp eax, 0xffffffff
je 0x35089d75
shl eax, 4
add eax, 0x3501970c
mov dword [ebp + 0x14], eax
test byte [edi + 0x15bc], 0x80
mov eax, 0x35060ada
jne 0x35089d2a
mov eax, fcn.3505f809
push dword [ebp - 0xc]
mov ecx, dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ecx]
call eax
test eax, eax
jne 0x35089d5a
test byte [edi + 0x15bc], 0x80
push eax
mov eax, dword [ebp - 0xc]
pop ecx
setne cl
xor edx, edx
inc ecx
div ecx
mov ecx, dword [ebp + 0x14]
mov ecx, dword [ecx]
cmp byte [eax + ecx], 0
je 0x35089d8e
add dword [ebp + 0x14], 0x10
inc dword [ebp + 8]
cmp dword [ebp + 0x14], 0x3501a78c
jge 0x35089d75
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp + 0x14]
cmp dword [ecx - 4], eax
je 0x35089d17
mov eax, dword [ebp + 0x18]
and eax, 0x2000
neg eax
sbb eax, eax
and eax, 0xfffffff6
add eax, 0xc
mov dword [ebx], eax
jmp 0x35089c71
mov eax, dword [ebp + 8]
shl eax, 4
test dword [ebp + 0x18], 0x2000
mov ecx, dword [eax + 0x35019710]
je 0x35089dbc
mov edx, dword [edi + 0x15bc]
and edx, 0x8000000
or edx, 0x10000000
shr edx, 0x1b
mov dword [ebx], edx
jmp 0x35089dea
test dword [edi + 0x15bc], 0x8000000
je 0x35089de4
cmp ecx, 0x3c
je 0x35089de4
cmp ecx, 0x3e
je 0x35089de4
cmp ecx, 0x26
je 0x35089de4
cmp ecx, 0x22
je 0x35089de4
mov dword [ebx], 3
jmp 0x35089dea
mov dword [ebx], 0xb
mov dword [ebx + 0x14], ecx
mov eax, dword [eax + 0x35019714]
mov dword [ebx + 0x1c], eax
and dword [ebx + 0x18], 0
jmp 0x35089c71
test dword [ebp + 0x18], 0x430
je 0x35089f8e
mov eax, dword [ebp + 8]
add dword [esi], ebx
mov dword [eax], 0xf
mov dword [eax + 4], 1
jmp 0x3508a603
cmp dword [ebp + 0x18], edx
je 0x35089e35
test dword [ebp + 0x18], 0x210a
je 0x35089ec0
mov eax, dword [edi + 0x1584]
mov ecx, dword [edi + 0x158c]
cmp eax, ecx
jae 0x35089f8e
add dword [edi + 0x1008], ebx
inc eax
push 0xa
mov dword [edi + 0x1584], eax
pop ebx
cmp eax, ecx
jae 0x35089e93
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x14]
mov ecx, edi
push dword [esi]
call fcn.3506ff56
test eax, eax
je 0x35089e93
cmp dword [ebp - 4], 0xd
jne 0x35089e7c
cmp dword [ebp - 8], ebx
je 0x35089e87
cmp dword [ebp - 4], ebx
jne 0x35089e93
cmp dword [ebp - 8], 0xd
jne 0x35089e93
add dword [edi + 0x1008], eax
inc dword [edi + 0x1584]
test byte [ebp + 0x18], 2
mov eax, dword [ebp + 8]
je 0x35089eb9
xor ecx, ecx
mov dword [eax], 5
mov dword [eax + 0x10], 0x51
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0x14], ecx
jmp 0x3508a600
mov dword [eax], ebx
jmp 0x3508a603
test dword [ebp + 0x18], 0x2f4f
jne 0x35089f8e
mov eax, dword [esi]
mov ebx, dword [ebp + 8]
mov dword [ebx + 4], eax
mov eax, dword [ebp - 0xc]
add dword [esi], eax
mov eax, dword [esi]
lea ecx, [ebp - 8]
push ecx
push dword [ebp + 0x14]
mov ecx, edi
push eax
mov dword [ebp + 0xc], 1
call fcn.3506ff56
test eax, eax
je 0x35089f21
cmp dword [ebp - 8], 0x20
je 0x35089f02
cmp dword [ebp - 8], 9
jne 0x35089f1b
add dword [esi], eax
inc dword [ebp + 0xc]
lea eax, [ebp - 8]
push eax
push dword [ebp + 0x14]
mov ecx, edi
push dword [esi]
call fcn.3506ff56
test eax, eax
jne 0x35089ef6
cmp dword [ebp + 0xc], 1
jne 0x35089f36
cmp dword [ebp - 4], 0x20
jne 0x35089f36
and dword [ebx + 4], 0
mov dword [ebx], 4
jmp 0x3508a603
and dword [ebx + 0x1c], 0
mov dword [ebx], 0xb
mov dword [ebx + 0x14], 0x20
jmp 0x35089df6
test dword [ebp + 0x18], 0x230
je 0x35089f8e
mov eax, dword [ebp + 8]
add dword [esi], ebx
mov dword [eax], 0xf
mov dword [eax + 4], edx
jmp 0x3508a603
mov eax, ecx
sub eax, 0x2d
je 0x3508a09c
dec eax
dec eax
je 0x3508a07b
sub eax, 0xd
je 0x35089fd6
dec eax
je 0x3508a07b
dec eax
je 0x3508a014
mov eax, dword [edi + 0x1584]
cmp eax, dword [edi + 0x158c]
mov eax, dword [ebp + 8]
jb 0x3508a108
mov ecx, dword [ebp - 4]
mov dword [eax], 9
mov dword [eax + 0x14], ecx
mov ecx, dword [edi + 0x114c]
mov dword [eax + 0x1c], ecx
test byte [edi + 0x15bc], 0x80
jne 0x3508a0f6
cmp ebx, 2
jne 0x3508a0f6
xor ecx, ecx
inc ecx
jmp 0x3508a0f8
lea eax, [ebp - 8]
push eax
mov eax, dword [esi]
push dword [ebp + 0x14]
add eax, ebx
push eax
mov ecx, edi
call fcn.3506ff56
mov dword [ebp + 0xc], eax
test eax, eax
je 0x3508a039
push dword [ebp - 8]
call fcn.3505f921
test eax, eax
jne 0x3508a014
cmp dword [ebp - 8], 0x2f
je 0x3508a014
test byte [ebp + 0x18], 8
jne 0x3508a043
cmp dword [ebp - 8], 0x21
je 0x3508a014
cmp dword [ebp - 8], 0x3f
jne 0x3508a039
test dword [ebp + 0x18], 0x3f00
jne 0x35089f8e
mov ecx, dword [ebp + 8]
xor eax, eax
cmp dword [ebp - 4], 0x3c
setne al
add eax, 7
mov dword [ecx], eax
add dword [esi], ebx
jmp 0x3508a603
test byte [ebp + 0x18], 8
je 0x35089f8e
cmp dword [ebp + 0xc], 0
jbe 0x35089f8e
cmp dword [ebp - 8], 0x3c
jne 0x35089f8e
mov eax, dword [ebp + 0xc]
add ebx, eax
mov eax, dword [ebp + 8]
add dword [esi], ebx
and dword [eax + 0x1c], 0
and dword [eax + 0x18], 0
mov dword [eax], 3
mov dword [eax + 0x14], 0x3c
jmp 0x3508a603
test byte [ebp + 0x18], 0x10
je 0x35089f8e
add dword [esi], ebx
xor eax, eax
cmp ecx, 0x3d
mov ecx, dword [ebp + 8]
setne al
add eax, 0xd
mov dword [ecx], eax
jmp 0x3508a603
test byte [ebp + 0x18], 0x10
je 0x35089f8e
lea eax, [ebp - 8]
push eax
mov eax, dword [esi]
push dword [ebp + 0x14]
add eax, ebx
push eax
mov ecx, edi
call fcn.3506ff56
test eax, eax
je 0x35089f8e
cmp dword [ebp - 8], 0x2d
jne 0x35089f8e
mov ecx, dword [ebp + 8]
mov dword [ecx], 2
mov edx, dword [esi]
mov dword [ecx + 4], edx
lea edx, [ebx + eax]
mov dword [ecx + 8], edx
mov dword [ecx + 0xc], 2
mov edx, dword [edi + 0x114c]
mov dword [ecx + 0x10], edx
add ebx, eax
jmp 0x3508a032
xor ecx, ecx
mov dword [eax + 0x18], ecx
add dword [esi], ebx
inc dword [edi + 0x1584]
jmp 0x3508a603
mov dword [eax], 2
mov ecx, dword [esi]
mov dword [eax + 4], ecx
mov ecx, dword [edi + 0x114c]
mov dword [eax + 0x10], ecx
mov eax, dword [edi + 0x1584]
add dword [esi], ebx
inc dword [edi + 0x1584]
test byte [ebp + 0x18], 1
mov dword [ebp + 0xc], eax
jne 0x3508a5ec
xor eax, eax
cmp dword [ebp - 4], 0x21
mov dword [ebp + 0x10], eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
jne 0x3508a1b1
test byte [ebp + 0x18], 0x40
je 0x3508a1b1
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
mov ecx, edi
push dword [esi]
call fcn.3506ff56
mov ebx, eax
test ebx, ebx
je 0x3508a518
cmp dword [ebp - 4], 0x2d
jne 0x3508a518
lea eax, [ebp - 8]
push eax
mov eax, dword [esi]
push dword [ebp + 0x14]
add eax, ebx
push eax
mov ecx, edi
call fcn.3506ff56
test eax, eax
je 0x3508a518
cmp dword [ebp - 8], 0x2d
jne 0x3508a518
add ebx, eax
add dword [esi], ebx
add dword [edi + 0x1584], 2
mov dword [ebp - 0xc], 1
jmp 0x3508a518
test dword [ebp + 0x18], 0x800
je 0x3508a518
xor ebx, ebx
inc ebx
cmp dword [ebp - 4], 0x2d
mov dword [ebp - 0xc], ebx
jne 0x3508a518
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
mov ecx, edi
push dword [esi]
call fcn.3506ff56
test eax, eax
je 0x3508a518
cmp dword [ebp - 4], 0x2d
jne 0x3508a518
mov dword [ebp + 0x10], ebx
jmp 0x3508a1fb
cmp dword [ebp - 4], 0x2d
jne 0x3508a217
add dword [esi], eax
inc dword [edi + 0x1584]
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
mov ecx, edi
push dword [esi]
call fcn.3506ff56
test eax, eax
jne 0x3508a1f5
cmp dword [ebp - 4], 0x21
jne 0x3508a518
add dword [esi], eax
jmp 0x3508a512
mov eax, dword [edi + 0x1584]
cmp eax, dword [edi + 0x158c]
jae 0x3508a532
mov eax, dword [ebp - 4]
cmp eax, 0x26
ja 0x3508a37a
je 0x3508a368
sub eax, 0
je 0x3508a532
sub eax, 9
je 0x3508a34d
dec eax
je 0x3508a356
sub eax, 3
je 0x3508a356
sub eax, 0x13
je 0x3508a308
dec eax
dec eax
jne 0x3508a50c
test dword [ebp + 0x18], 0x430
jne 0x3508a532
cmp dword [ebp - 0x10], eax
jne 0x3508a2e8
cmp dword [ebp - 0x14], eax
jne 0x3508a50c
test byte [ebp + 0x18], 0x40
je 0x3508a50c
cmp dword [ebp - 0xc], eax
jne 0x3508a50c
mov dword [ebp - 0x10], 1
jmp 0x3508a50c
cmp dword [ebp - 8], 0x22
je 0x3508a2c5
cmp dword [ebp - 8], 0x27
jne 0x3508a2ff
cmp dword [edi + 0x15b4], 1
jbe 0x3508a2e6
test byte [edi + 0x15bc], 0x80
mov ecx, dword [esi]
je 0x3508a2e2
push 0x20
pop edx
mov word [ebx + ecx], dx
jmp 0x3508a2e6
mov byte [ebx + ecx], 0x20
add ebx, eax
lea eax, [ebp - 8]
push eax
mov eax, dword [esi]
push dword [ebp + 0x14]
add eax, ebx
push eax
mov ecx, edi
call fcn.3506ff56
test eax, eax
jne 0x3508a2b9
and dword [ebp - 0x10], 0
jmp 0x3508a50c
cmp dword [ebp + 0x18], 0
jne 0x3508a34d
lea eax, [ebp - 8]
push eax
mov eax, dword [esi]
push dword [ebp + 0x14]
add eax, ebx
push eax
mov ecx, edi
call fcn.3506ff56
test eax, eax
je 0x3508a34d
mov eax, dword [ebp - 8]
test eax, eax
je 0x3508a34d
cmp eax, 8
jbe 0x3508a510
cmp eax, 0xa
jbe 0x3508a34d
cmp eax, 0xd
je 0x3508a34d
cmp eax, 0x20
je 0x3508a34d
cmp eax, 0x3c
jne 0x3508a510
test dword [ebp + 0x18], 0x2f4e
jmp 0x3508a35d
test dword [ebp + 0x18], 0xe44
je 0x3508a532
jmp 0x3508a510
test dword [ebp + 0x18], 0xf7c
je 0x3508a532
jmp 0x3508a50c
sub eax, 0x27
je 0x3508a4e1
sub eax, 6
je 0x3508a442
dec eax
dec eax
je 0x3508a433
sub eax, 0xd
je 0x3508a3c9
dec eax
je 0x3508a433
dec eax
jne 0x3508a50c
test dword [ebp + 0x18], 0x3700
jne 0x3508a510
xor eax, eax
cmp dword [ebp - 0xc], eax
je 0x3508a422
cmp dword [ebp + 0x10], eax
jne 0x3508a532
jmp 0x3508a510
and dword [ebp + 0x10], 0
lea eax, [ebp - 8]
push eax
mov eax, dword [esi]
push dword [ebp + 0x14]
add eax, ebx
push eax
mov ecx, edi
call fcn.3506ff56
test eax, eax
je 0x3508a3a7
push dword [ebp - 8]
call fcn.3505f921
test eax, eax
jne 0x3508a3a7
mov ecx, dword [ebp - 8]
cmp ecx, 0x2f
je 0x3508a3a7
mov eax, dword [edi + 0x15bc]
shl eax, 0x1a
sar eax, 0x1f
test eax, eax
jne 0x3508a41a
cmp ecx, 0x21
je 0x3508a3a7
cmp ecx, 0x3f
je 0x3508a3a7
test eax, eax
je 0x3508a510
cmp ecx, 0x3c
jmp 0x3508a35d
cmp dword [ebp - 0x10], eax
jne 0x3508a510
cmp dword [ebp - 0x14], eax
jmp 0x3508a35d
test byte [ebp + 0x18], 0x10
jne 0x3508a532
jmp 0x3508a50c
cmp dword [ebp - 0xc], 0
je 0x3508a467
mov ecx, dword [edi + 0x1144]
mov eax, dword [ecx]
call dword [eax + 0xc]
test eax, eax
jne 0x3508a467
mov eax, dword [esi]
add eax, 0x100
cmp eax, dword [ebp + 0x14]
jae 0x3508a532
add dword [esi], ebx
and dword [ebp + 0x10], 0
inc dword [edi + 0x1584]
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
mov ecx, edi
push dword [esi]
call fcn.3506ff56
test eax, eax
je 0x3508a518
cmp dword [ebp - 4], 0x2d
jne 0x3508a518
add dword [esi], eax
inc dword [edi + 0x1584]
test byte [ebp + 0x18], 0x10
mov dword [ebp + 0x10], 1
jne 0x3508a532
cmp dword [ebp - 0xc], 0
je 0x3508a518
jmp 0x3508a4c8
cmp dword [ebp - 4], 0x2d
jne 0x3508a217
add dword [esi], eax
inc dword [edi + 0x1584]
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
mov ecx, edi
push dword [esi]
call fcn.3506ff56
test eax, eax
jne 0x3508a4b6
jmp 0x3508a217
test dword [ebp + 0x18], 0x230
jne 0x3508a532
xor eax, eax
cmp dword [ebp - 0x14], eax
jne 0x3508a5b5
cmp dword [ebp - 0x10], eax
jne 0x3508a50c
test byte [ebp + 0x18], 0x40
je 0x3508a50c
cmp dword [ebp - 0xc], eax
jne 0x3508a50c
mov dword [ebp - 0x14], 1
and dword [ebp + 0x10], 0
add dword [esi], ebx
inc dword [edi + 0x1584]
lea eax, [ebp - 4]
push eax
push dword [ebp + 0x14]
mov ecx, edi
push dword [esi]
call fcn.3506ff56
mov ebx, eax
test ebx, ebx
jne 0x3508a228
test byte [edi + 0x15bc], 0x80
je 0x3508a5ec
mov eax, dword [esi]
movzx ecx, word [eax - 2]
mov ebx, 0x3ff
add ecx, 0x2800
mov edx, ebx
cmp cx, dx
ja 0x3508a5ec
lea ecx, [ebp - 4]
push ecx
push dword [ebp + 0x14]
mov ecx, edi
push eax
call fcn.3506ff56
test eax, eax
je 0x3508a5d5
mov ecx, dword [ebp - 4]
add ecx, 0x2400
cmp cx, bx
ja 0x3508a5d5
add dword [esi], eax
inc dword [edi + 0x1584]
jmp 0x3508a5ec
cmp dword [ebp - 8], 0x22
je 0x3508a592
cmp dword [ebp - 8], 0x27
jne 0x3508a5cc
cmp dword [edi + 0x15b4], 1
jbe 0x3508a5b3
test byte [edi + 0x15bc], 0x80
mov ecx, dword [esi]
je 0x3508a5af
push 0x20
pop edx
mov word [ebx + ecx], dx
jmp 0x3508a5b3
mov byte [ebx + ecx], 0x20
add ebx, eax
lea eax, [ebp - 8]
push eax
mov eax, dword [esi]
push dword [ebp + 0x14]
add eax, ebx
push eax
mov ecx, edi
call fcn.3506ff56
test eax, eax
jne 0x3508a586
and dword [ebp - 0x14], 0
jmp 0x3508a50c
mov eax, dword [edi + 0x1584]
sub eax, dword [ebp + 0xc]
cmp eax, 1
jbe 0x3508a5ec
add dword [esi], 0xfffffffe
dec dword [edi + 0x1584]
mov ecx, dword [esi]
mov eax, dword [ebp + 8]
sub ecx, dword [eax + 4]
mov dword [eax + 8], ecx
mov ecx, dword [edi + 0x1584]
sub ecx, dword [ebp + 0xc]
mov dword [eax + 0xc], ecx
pop edi
pop esi
xor eax, eax
pop ebx
leave
ret 0x14