Function at 0x535900
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x48
mov edx, dword [esp + 0x4c]
push ebx
push ebp
push esi
mov ebx, dword [edx]
push edi
mov edi, dword [esp + 0x64]
mov dword [esp + 0x24], ebx
mov esi, dword [ebx + 8]
mov dword [esp + 0x38], esi
mov ebp, dword [edi + 0x4c]
mov dword [esp + 0x18], ebp
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x34], ecx
cmp dword [esi + 0x78], ecx
jg 0x53594a
push 0
push 0
push 0
push 0x11
push esi
call fcn.00515850
mov edx, dword [esp + 0x70]
add esp, 0x14
mov dword [esp + 0x34], eax
jmp 0x535980
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x11
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
lea ecx, [ecx]
push edi
push edx
push ebx
call fcn.00572bf0
dec dword [ebx + 0x38]
add esp, 0xc
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x30], eax
mov eax, dword [edi + 4]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [ebx + 0x2c], eax
mov dword [edi + 0x34], eax
mov dword [esp + 0x20], eax
movzx eax, byte [edi + 0x38]
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x5c]
mov eax, dword [eax + 4]
mov eax, dword [eax + ecx*8 + 0x18]
mov ecx, 0xa
movzx eax, word [eax + 0x26]
cwde
cdq
idiv ecx
mov ecx, eax
mov eax, edx
cdq
movzx ecx, cx
mov edi, eax
test edx, edx
jne 0x5359ea
cmp edi, 5
jae 0x5359ea
test edx, edx
jne 0x5359e5
cmp edi, 1
jb 0x5359f0
add edi, 0xffffffff
jmp 0x5359ed
add edi, 0xfffffffe
adc edx, 0xffffffff
cmp cx, 0x3c
jg 0x535a4b
cmp cx, 3
jl 0x535a11
movsx ecx, cx
sub ecx, 3
add edi, 8
mov eax, edi
adc edx, 0
call fcn.0042e9b0
jmp 0x535a28
movsx eax, cx
mov ecx, 3
sub ecx, eax
add edi, 8
mov eax, edi
adc edx, 0
call fcn.0042eee0
mov edi, eax
test edx, edx
ja 0x535a4b
jb 0x535a38
cmp edi, 0x2710
jae 0x535a3f
mov edi, 0x2710
jmp 0x535a50
test edx, edx
jne 0x535a4b
cmp edi, 0x989680
jbe 0x535a58
mov edi, 0x989680
mov dword [esp + 0x2c], 0
mov ecx, dword [esi + 0x74]
mov edx, dword [esp + 0x20]
cmp dword [esi + 0x78], ecx
jg 0x535a75
push 0
push edx
push edi
push 0x4c
push esi
call fcn.00515850
add esp, 0x14
jmp 0x535aa0
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x4c
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x20], ecx
cmp dword [esi + 0x78], ecx
jg 0x535ac9
push 0
push 0
push dword [esp + 0x18]
push 0x26
push esi
call fcn.00515850
mov edx, dword [esp + 0x24]
add esp, 0x14
mov dword [esp + 0x20], eax
jmp 0x535afc
mov edx, dword [esp + 0x10]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x26
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x5c]
mov edi, dword [eax + 0x70]
mov eax, dword [eax + 0x64]
lea eax, [eax + eax*2]
shl eax, 4
add eax, edi
cmp edi, eax
jae 0x535b7c
mov esi, dword [esp + 0x10]
mov ebp, eax
test byte [edi + 0xa], 2
mov eax, dword [edi]
jne 0x535b69
mov dword [esp + 0x40], fcn.004ff1f0
mov ecx, 3
mov word [esp + 0x50], cx
mov dword [esp + 0x44], 0x55ae30
mov dword [esp + 0x54], esi
test eax, eax
je 0x535b58
push eax
lea eax, [esp + 0x40]
push eax
call fcn.00580c50
add esp, 8
cmp word [esp + 0x50], 0
je 0x535b69
push 0x10
push dword [esp + 0x34]
push dword [edi]
push ebx
call fcn.0053d910
add esp, 0x10
add edi, 0x30
cmp edi, ebp
jb 0x535b18
mov esi, dword [esp + 0x38]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
test dword [ebp + 0x2c], 0x100
je 0x535c75
mov al, byte [ebx + 0x13]
test al, al
jne 0x535b98
inc dword [ebx + 0x2c]
mov edi, dword [ebx + 0x2c]
jmp 0x535ba7
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov edi, dword [ebx + eax*4 + 0x98]
mov ecx, dword [esi + 0x74]
cmp dword [esi + 0x78], ecx
jg 0x535bc6
push 0
push edi
push dword [esp + 0x18]
push 0x86
push esi
call fcn.00515850
add esp, 0x14
jmp 0x535bf5
mov ebx, dword [esp + 0x24]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x86
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x64]
mov edx, dword [esi + 0x74]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x28], eax
cmp dword [esi + 0x78], edx
jg 0x535c1e
push edi
push 0
push eax
push 0xb2
push esi
call fcn.00515850
add esp, 0x14
mov edx, eax
jmp 0x535c51
mov ebp, dword [esp + 0x28]
lea eax, [edx + 1]
mov dword [esi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], ebp
mov ebp, dword [esp + 0x18]
mov dword [eax + ecx*4], 0xb2
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
jne 0x535da4
mov eax, dword [esi + 0x70]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], 1
jmp 0x535da4
movzx ecx, word [ebp + 0x18]
mov edx, dword [ebp + 0x20]
mov dword [esp + 0x28], edx
mov dword [esp + 0x1c], ecx
cmp ecx, 1
jne 0x535cb5
mov al, byte [ebx + 0x13]
test al, al
jne 0x535c9e
inc dword [ebx + 0x2c]
xor edi, edi
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x14], eax
jmp 0x535ce9
dec al
xor edi, edi
mov byte [ebx + 0x13], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x98]
mov dword [esp + 0x14], eax
jmp 0x535ce9
mov edi, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x14], edx
cmp ecx, edi
jg 0x535cd0
lea eax, [edx + ecx]
sub edi, ecx
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x1c], edi
jmp 0x535cdf
mov eax, dword [ebx + 0x2c]
lea edx, [eax + 1]
add eax, ecx
mov dword [esp + 0x14], edx
mov dword [ebx + 0x2c], eax
xor edi, edi
test ecx, ecx
jle 0x535d1e
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
lea eax, [edi + ebp]
push eax
mov eax, dword [edx + 4]
movsx eax, word [eax + edi*2]
push eax
push dword [esp + 0x18]
push dword [edx + 0xc]
push esi
call fcn.0053ad40
mov edx, dword [esp + 0x3c]
inc edi
add esp, 0x14
cmp edi, ebx
jl 0x535cf1
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x64]
mov edx, dword [esi + 0x74]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x28], eax
cmp dword [esi + 0x78], edx
jg 0x535d4b
mov edi, dword [esp + 0x14]
push edi
push 0
push eax
push 0xb2
push esi
call fcn.00515850
add esp, 0x14
mov edx, eax
jmp 0x535d7e
mov edi, dword [esp + 0x28]
lea eax, [edx + 1]
mov dword [esi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x14]
mov dword [eax + ecx*4], 0xb2
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
jne 0x535d9b
mov eax, dword [esi + 0x70]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x1c]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
jmp 0x535d9f
mov edx, dword [esp + 0x1c]
cmp edx, 1
jne 0x535dbe
test edi, edi
je 0x535dc9
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x535dc9
movzx eax, al
mov dword [ebx + eax*4 + 0x98], edi
inc byte [ebx + 0x13]
jmp 0x535dc9
cmp edx, dword [ebx + 0x1c]
jle 0x535dc9
mov dword [ebx + 0x1c], edx
mov dword [ebx + 0x20], edi
mov ecx, dword [esi + 0xc]
mov edx, dword [esp + 0x30]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x535de7
push edx
push esi
push ecx
call fcn.005278f0
add esp, 0xc
jmp 0x535df0
mov ecx, dword [ecx + 0x40]
mov eax, dword [esi + 0x74]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x20]
mov ecx, dword [esi + 0x74]
inc edx
mov edi, dword [eax + 4]
cmp dword [esi + 0x78], ecx
jg 0x535e15
push 0
push edx
push edi
push 5
push esi
call fcn.00515850
add esp, 0x14
jmp 0x535e44
mov ebp, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 5
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x20]
mov edx, dword [esi + 0x74]
test ecx, ecx
jns 0x535e52
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
je 0x535e61
mov eax, 0x973ecc
jmp 0x535e6a
mov eax, dword [esi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
and dword [ebp + 0x2c], 0xffbfffff
mov eax, dword [ebx]
test dword [eax + 0x50], 0x100000
jne 0x535f18
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
inc eax
mov dword [esp + 0x60], eax
movzx edi, byte [edx + 0x30]
cmp eax, edi
jge 0x535f0e
mov ecx, dword [edx + 4]
mov ebx, eax
imul eax, ebx, 0x58
add edx, 0x34c
mov dword [esp + 0x30], ecx
add edx, eax
lea esp, [esp]
lea eax, [edx - 0x4c]
mov dword [esp + 0x64], eax
movzx eax, byte [edx - 0x14]
lea eax, [eax + eax*8]
test byte [ecx + eax*8 + 0x2c], 8
jne 0x535ef0
mov ebp, dword [edx]
test ebp, ebp
je 0x535ef0
mov ecx, dword [ebp]
mov eax, dword [ebp + 4]
and ecx, dword [esp + 0x68]
and eax, dword [esp + 0x6c]
or ecx, eax
jne 0x535eec
mov eax, dword [ebp + 0x2c]
and eax, 0x400004
cmp eax, 0x400000
je 0x535ef8
mov ecx, dword [esp + 0x30]
inc ebx
add edx, 0x58
cmp ebx, edi
jl 0x535eb0
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x60], ebx
mov eax, dword [esp + 0x60]
cmp eax, edi
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x18], ebp
mov edi, dword [esp + 0x64]
jl 0x535980
mov ecx, dword [esp + 0x34]
mov edx, dword [esi + 0x74]
test ecx, ecx
jns 0x535f26
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
je 0x535f3c
pop edi
pop esi
pop ebp
mov dword [0x973ed4], edx
pop ebx
add esp, 0x48
ret
mov eax, dword [esi + 0x70]
lea ecx, [ecx + ecx*4]
pop edi
pop esi
pop ebp
mov dword [eax + ecx*4 + 8], edx
pop ebx
add esp, 0x48
ret