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

Disassembly:
push ebp
mov ebp, edx
push edi
push esi
push ebx
sub esp, 0xbc
mov edi, dword [esp + 0xd0]
mov dword [esp + 0x34], eax
mov eax, 1
mov dword [esp + 0x6c], edx
mov dword [esp + 0x4c], ecx
test edi, edi
je 0x59c639
test edx, edx
je 0x59cbe1
lea edx, [esp + 0x6c]
xor eax, eax
lea esi, [esi]
lea esi, [esi]
cmp dword [ebp + 0x18], ecx
ja 0x59c62c
lea edx, [ebp + 0x10]
add eax, 1
mov ebp, dword [ebp + 0x10]
mov dword [edx], ebp
test ebp, ebp
jne 0x59c621
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x34]
add dword [edi + 0xc0], eax
cmp dword [ebp + 0x18], 1
jne 0x59c66c
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp + 4]
mov eax, dword [eax + 0x68]
bswap eax
add eax, 1
bswap eax
mov dword [edx + 0x18], eax
mov edx, dword [ebp + 4]
mov dword [edx + 0x5c], eax
mov eax, dword [ebp + 4]
mov dword [eax + 0x60], 0x60532e00
mov ebx, dword [esp + 0x34]
mov edi, dword [ebx + 0x98]
movzx eax, byte [ebx + 0xb]
mov dword [esp + 0x44], edi
mov edi, dword [ebx + 0xd8]
mov byte [esp + 0x48], al
mov eax, dword [edi + 0x20]
mov ebx, dword [eax]
lea eax, [edi + 0x34]
mov dword [esp + 8], 0x30
mov dword [esp], eax
mov dword [esp + 4], ebx
call fcn.0086e9f9
mov dword [esp + 0x20], 0
test eax, eax
je 0x59c6ba
mov eax, dword [ebx + 0x10]
add eax, 1
mov dword [esp + 0x20], eax
cmp word [edi + 0x28], 0
jne 0x59c731
mov eax, dword [ebx + 0x60]
test eax, eax
jne 0x59cb91
mov eax, dword [edi + 4]
movzx edx, byte [edi + 0x2b]
test dl, dl
jne 0x59c6e1
mov edx, 3
call fcn.0054af51
mov esi, 0xffffffff
lea edx, [esp + 0x90]
mov word [edi + 0x28], si
mov ebx, edx
xor esi, esi
lea esi, [esi]
add esi, 1
mov ecx, 1
mov edx, ebx
mov eax, edi
mov dword [esp], esi
call fcn.00585381
cmp eax, 0xffffffff
je 0x59c6f9
mov dword [esp + 0x38], eax
test eax, eax
je 0x59c731
mov eax, dword [esp + 0x38]
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, byte [esp + 0x48]
mov dword [esp + 0x28], eax
mov eax, dword [edi + 0x44]
mov dword [esp + 0x30], eax
test eax, eax
je 0x59ca41
mov eax, dword [edi + 8]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x30]
mov dword [esp + 0x78], edi
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x38], edi
lea ebx, [eax + 0x18]
mov dword [esp + 0x58], ebp
mov dword [esp + 0x8c], eax
mov eax, ebx
cdq
mov eax, esi
mov dword [esp + 0x5c], ebx
mov ecx, edx
mov dword [esp + 0x2c], edx
mul ebx
imul ecx, esi
mov dword [esp + 0x28], ebx
mov esi, ebp
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
add edx, ecx
add eax, 0x20
mov dword [esp + 0x40], 0
mov ecx, eax
mov eax, dword [esp + 0xd0]
adc edx, 0
mov edi, ecx
mov ebp, edx
xor eax, 1
and eax, 1
mov byte [esp + 0x50], al
jmp 0x59c881
mov ecx, dword [esi + 0x10]
test ecx, ecx
jne 0x59c7eb
cmp byte [esp + 0x50], 0
je 0x59cb81
mov eax, dword [esp + 0x38]
lea ecx, [esp + 0x90]
mov dword [esp + 0x90], 0
call fcn.005636c1
mov ecx, dword [esp + 0x90]
cmp dword [esp + 0x20], ecx
ja 0x59cb71
mov ebx, dword [esp + 0x2c]
lea eax, [ecx - 1]
imul ebx, eax
mul dword [esp + 0x28]
add edx, ebx
mov ebx, dword [esp + 0x38]
add eax, 0x38
adc edx, 0
mov ebx, dword [ebx + 0x68]
test ebx, ebx
je 0x59c83c
cmp ecx, ebx
jae 0x59c843
mov ebx, dword [esp + 0x38]
mov dword [ebx + 0x68], ecx
mov ebx, dword [esp + 0x38]
mov ecx, dword [ebx + 8]
mov ebx, dword [ecx]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x10], edx
mov dword [esp + 8], eax
mov eax, dword [esi + 4]
mov dword [esp], ecx
mov dword [esp + 4], eax
call dword [ebx + 0xc]
test eax, eax
jne 0x59ca24
and word [esi + 0x1c], 0xffbf
mov esi, dword [esi + 0x10]
test esi, esi
je 0x59c8e1
lea esi, [esi]
mov ebx, dword [esp + 0x20]
mov edx, dword [esi + 0x18]
test ebx, ebx
jne 0x59c7d9
mov eax, dword [esp + 0xd0]
add dword [esp + 0x30], 1
xor ecx, ecx
test eax, eax
jne 0x59cb59
mov ebx, dword [esi + 4]
mov dword [esp], ecx
lea eax, [esp + 0x78]
mov ecx, edx
mov dword [esp + 4], edi
mov dword [esp + 8], ebp
mov edx, ebx
call fcn.0055cc51
test eax, eax
jne 0x59ca24
add edi, dword [esp + 0x28]
adc ebp, dword [esp + 0x2c]
mov dword [esp + 0x40], esi
or word [esi + 0x1c], 0x40
mov esi, dword [esi + 0x10]
test esi, esi
jne 0x59c881
mov eax, dword [esp + 0xd0]
mov dword [esp + 0x50], edi
mov dword [esp + 0x54], ebp
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x58]
test eax, eax
je 0x59cc71
mov eax, dword [edi + 0x68]
test eax, eax
jne 0x59cd83
movzx eax, byte [esp + 0x48]
and eax, 3
mov byte [esp + 0x20], al
je 0x59ccd9
cmp byte [edi + 0x31], 0
je 0x59d038
mov edx, dword [edi + 8]
mov eax, dword [edx]
mov eax, dword [eax + 0x2c]
test eax, eax
je 0x59d0a7
mov dword [esp], edx
mov ebx, 0x200
xor esi, esi
call eax
cmp eax, 0x1f
jle 0x59c95c
cmp eax, 0x10000
mov esi, 0x10000
cmovg eax, esi
mov esi, eax
mov ebx, eax
sar esi, 0x1f
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
add eax, ebx
adc edx, esi
add eax, 0xffffffff
adc edx, 0xffffffff
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0085d5b1
mov ecx, edx
mov edx, esi
mov esi, dword [esp + 0x54]
imul ecx, ebx
imul edx, eax
add ecx, edx
mul ebx
mov ebx, dword [esp + 0x50]
add edx, ecx
cmp ebx, eax
mov ecx, esi
mov dword [esp + 0x80], eax
sbb ecx, edx
mov dword [esp + 0x84], edx
jge 0x59ccc9
lea esi, [esp + 0x78]
mov dword [esp + 0x20], edi
mov edi, dword [esp + 0x54]
mov dword [esp + 0x38], ebp
mov ebx, esi
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x48], 0
mov esi, dword [esp + 0x50]
jmp 0x59ca04
add esi, dword [esp + 0x28]
adc edi, dword [esp + 0x2c]
mov eax, edi
add dword [esp + 0x48], 1
cmp esi, dword [esp + 0x80]
sbb eax, dword [esp + 0x84]
jge 0x59d09a
mov eax, dword [esp + 0x4c]
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 4]
mov dword [esp + 4], esi
mov dword [esp], eax
mov eax, ebx
mov dword [esp + 8], edi
call fcn.0055cc51
test eax, eax
je 0x59c9e1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x38]
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret
mov ecx, dword [esp + 0x44]
mov edx, 0x9ae8ac37
mov esi, 0x82067f37
mov dword [esp + 0x90], 0x82067f37
mov dword [esp + 0x94], 0x18e22d00
bswap ecx
mov dword [esp + 0x98], ecx
mov ebx, dword [edi + 0x70]
mov eax, ebx
bswap eax
mov dword [esp + 0x9c], eax
test ebx, ebx
je 0x59cc31
mov ebx, dword [edi + 0x58]
add ecx, esi
add eax, edx
add ecx, edx
mov dword [esp + 0x40], ebx
mov ebx, dword [edi + 0x54]
add eax, ecx
mov dword [esp + 0xa0], ebx
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x40]
mov dword [esp + 0xa4], ebx
mov ebx, dword [esp + 0x38]
lea esi, [ecx + ebx]
mov ebx, dword [esp + 0x44]
lea ecx, [esp + 0x90]
add esi, eax
add eax, dword [esp + 0xa4]
add eax, esi
mov edx, esi
bswap edx
mov dword [esp + 0xa8], edx
mov edx, eax
bswap edx
mov dword [esp + 0xac], edx
mov dword [edi + 0x50], eax
mov eax, dword [edi + 8]
mov byte [edi + 0x41], 0
mov byte [edi + 0x2f], 1
mov edx, dword [eax]
mov dword [edi + 0x24], ebx
mov dword [edi + 0x4c], esi
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x20
mov dword [esp + 4], ecx
mov dword [esp], eax
call dword [edx + 0xc]
mov dword [esp + 0x38], eax
test eax, eax
jne 0x59c71a
cmp byte [edi + 0x30], 0
mov eax, dword [edi + 8]
je 0x59c74c
mov edx, dword [esp + 0x28]
sar edx, 2
and edx, 3
je 0x59c74c
call fcn.005474a1
mov dword [esp + 0x38], eax
test eax, eax
je 0x59c749
jmp 0x59c71a
mov eax, dword [esi + 0x10]
test eax, eax
jne 0x59c8a6
mov ecx, dword [esp + 0x4c]
jmp 0x59c8a6
mov edx, dword [esi + 0x18]
jmp 0x59c890
add dword [esp + 0x30], 1
mov ecx, dword [esp + 0x4c]
jmp 0x59c8a6
call fcn.00582201
test eax, eax
jne 0x59cbab
lea edx, [esp + 0x90]
mov eax, 4
call fcn.00582851
cmp byte [edi + 0x2b], 0
jne 0x59cbf1
mov eax, dword [edi + 4]
mov ecx, 4
mov edx, 4
call fcn.0054af81
mov dword [esp + 0x38], eax
test eax, eax
je 0x59cbf1
cmp dword [esp + 0x38], 5
jne 0x59c71a
jmp 0x59c6cc
xor eax, eax
jmp 0x59c639
mov edx, dword [esp + 0x90]
mov eax, edi
call fcn.0054acf1
cmp byte [edi + 0x2b], 0
mov eax, dword [edi + 4]
jne 0x59c6e1
mov edx, 4
mov ecx, 4
call fcn.0054b021
mov eax, dword [edi + 4]
movzx edx, byte [edi + 0x2b]
jmp 0x59c6d3
call fcn.00582201
test eax, eax
jne 0x59cc47
lea edx, [edi + 0x54]
mov eax, 8
call fcn.00582851
mov esi, dword [esp + 0x90]
mov edx, dword [esp + 0x94]
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0x9c]
add edx, esi
jmp 0x59ca84
mov eax, dword [edi + 0x44]
mov dword [esp + 0x48], 0
mov byte [esp + 0x30], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x28], ebp
mov esi, ebp
mov ebp, dword [esp + 0x20]
jmp 0x59ccba
add ebp, 1
mov ecx, dword [esi + 0x18]
mov eax, edi
mov edx, ebp
call fcn.00563a41
test eax, eax
mov ebx, eax
sete al
mov esi, dword [esi + 0x10]
test esi, esi
je 0x59cfd1
test al, al
je 0x59cf31
test byte [esi + 0x1c], 0x40
jne 0x59cc91
mov eax, 1
xor ebx, ebx
jmp 0x59cca7
cmp edx, dword [esp + 0x54]
jne 0x59ccd9
cmp eax, dword [esp + 0x50]
je 0x59d038
mov dword [esp + 0x48], 0
cmp byte [edi + 0x2f], 0
je 0x59d077
mov eax, dword [edi + 0x10]
mov edx, dword [edi + 0x14]
mov dword [esp + 0x38], 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
test edx, edx
js 0x59d08e
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x30]
add eax, dword [esp + 0x48]
imul ecx, eax
mul dword [esp + 0x5c]
add edx, ecx
mov ebx, eax
add ebx, 0x1f
mov esi, edx
adc esi, 0
cmp ebx, dword [esp + 0x20]
mov ebx, esi
sbb ebx, dword [esp + 0x24]
jl 0x59cd42
add eax, 0x20
adc edx, 0
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea edx, [edi + 0x6c]
lea eax, [edi + 8]
mov dword [esp], ebx
mov dword [esp + 4], esi
call fcn.00561ef1
mov byte [edi + 0x2f], 0
mov eax, dword [edi + 0x44]
mov esi, dword [esp + 0x38]
mov dword [esp + 0x20], eax
test esi, esi
jne 0x59c71a
mov ebx, dword [esp + 0x48]
test ebx, ebx
setg byte [esp + 0x30]
jmp 0x59cc85
mov eax, dword [edi + 0x24]
add eax, 0x18
mov dword [esp], eax
mov dword [esp + 0x58], eax
call fcn.005831c1
mov dword [esp + 0x64], eax
test eax, eax
je 0x59d0b3
mov eax, dword [edi + 0x68]
mov ecx, 0x18
xor ebx, ebx
cmp eax, 1
je 0x59cdcf
mov esi, dword [esp + 0x58]
sub eax, 2
mov ebx, esi
sar ebx, 0x1f
mov ecx, ebx
imul ecx, eax
mul esi
add edx, ecx
add eax, 0x30
adc edx, 0
mov ecx, eax
mov ebx, edx
mov eax, dword [edi + 8]
mov edx, dword [eax]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x64]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 8
mov dword [esp + 4], ebx
mov dword [esp], eax
call dword [edx + 8]
mov esi, dword [edi + 0x68]
mov dword [esp + 0x38], eax
mov edx, eax
mov eax, dword [ebx]
bswap eax
mov dword [edi + 0x4c], eax
mov eax, dword [ebx + 4]
mov dword [edi + 0x68], 0
bswap eax
mov dword [edi + 0x50], eax
test edx, edx
jne 0x59cf11
cmp dword [esp + 0x30], esi
jb 0x59cf11
mov eax, dword [esp + 0x58]
mov dword [esp + 0x20], esi
mov dword [esp + 0x68], ebp
mov ebp, ebx
mov dword [esp + 0x38], eax
sar eax, 0x1f
mov dword [esp + 0x3c], eax
lea eax, [ebx + 0x18]
mov dword [esp + 0x60], eax
lea esi, [esi]
mov esi, dword [esp + 0x3c]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x38]
sub eax, 1
mov ecx, esi
imul ecx, eax
mul ebx
add edx, ecx
add eax, 0x20
mov ecx, dword [esp + 0x58]
mov ebx, eax
mov eax, dword [edi + 8]
adc edx, 0
mov esi, edx
mov edx, dword [eax]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 8], ecx
mov dword [esp + 4], ebp
mov dword [esp], eax
call dword [edx + 8]
test eax, eax
je 0x59cea9
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00547771
jmp 0x59c71a
lea eax, [esp + 0x90]
mov edx, dword [ebp]
mov ecx, dword [ebp + 4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x60]
bswap edx
bswap ecx
mov dword [esp], eax
mov eax, edi
call fcn.0055cba1
mov eax, dword [edi + 8]
mov edx, dword [eax]
mov dword [esp + 0xc], ebx
lea ebx, [esp + 0x90]
mov dword [esp + 4], ebx
mov dword [esp + 0x10], esi
mov dword [esp + 8], 0x18
mov dword [esp], eax
call dword [edx + 0xc]
add dword [esp + 0x20], 1
mov ebx, dword [esp + 0x20]
test eax, eax
jne 0x59cf09
cmp dword [esp + 0x30], ebx
jae 0x59ce49
mov dword [esp + 0x38], eax
mov ebp, dword [esp + 0x68]
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00547771
mov eax, dword [esp + 0x38]
test eax, eax
je 0x59c90b
jmp 0x59c71a
mov dword [esp + 0x38], ebx
mov dword [esp + 0x20], ebp
mov ebp, dword [esp + 0x28]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x38]
test ecx, ecx
jne 0x59c71a
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0xd0]
mov dword [edi + 0x44], esi
mov eax, ebx
sar ebx, 0x10
xor al, al
or eax, ebx
mov word [edi + 0x42], ax
test edx, edx
je 0x59cf81
mov eax, dword [esp + 0x4c]
add dword [edi + 0x3c], 1
mov dword [edi + 0x48], eax
mov eax, edi
call fcn.0054abf1
mov dword [edi + 0xc], esi
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x58]
test eax, eax
je 0x59c71a
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov ecx, dword [ebp + 4]
mov edx, dword [ebp + 0x18]
call fcn.0059c561
mov ebp, dword [ebp + 0x10]
test ebp, ebp
je 0x59cfb8
mov eax, dword [esi + 0x58]
test eax, eax
jne 0x59cf98
mov ebp, dword [ebp + 0x10]
test ebp, ebp
jne 0x59cfaa
mov dword [esp + 0x38], ebx
mov eax, dword [esp + 0x38]
add esp, 0xbc
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x20], ebp
mov esi, ebp
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x38], ebx
test al, al
je 0x59cf3d
cmp byte [esp + 0x30], 0
je 0x59cf3d
mov ebx, esi
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x48]
jmp 0x59d005
test ecx, ecx
jle 0x59d029
mov ecx, dword [ebp + 0x18]
add ebx, 1
mov eax, edi
mov edx, ebx
call fcn.00563a41
mov ecx, esi
sub ecx, ebx
add ecx, dword [esp + 0x20]
test eax, eax
je 0x59d001
jmp 0x59ca24
mov dword [esp + 0x38], eax
mov ebp, dword [esp + 0x28]
mov esi, ebx
jmp 0x59cf41
movzx edx, byte [esp + 0x20]
mov eax, dword [esp + 0x7c]
call fcn.005474a1
cmp byte [edi + 0x2f], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x38], eax
je 0x59cd60
mov eax, dword [edi + 0x10]
mov edx, dword [edi + 0x14]
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], edx
test edx, edx
jns 0x59cd09
jmp 0x59cd60
mov eax, dword [edi + 0x44]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x48]
test eax, eax
setg byte [esp + 0x30]
jmp 0x59cc85
mov eax, dword [edi + 0x44]
mov dword [esp + 0x20], eax
jmp 0x59cd73
mov edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x38]
jmp 0x59cce1
mov ebx, 0x1000
xor esi, esi
jmp 0x59c95c
mov dword [esp + 0x38], 7
jmp 0x59c71a