Function at 0x51ffa0
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 0x51ffea
push 0
push 0
push 0
push 0x11
push esi
call fcn.004ffef0
mov edx, dword [esp + 0x70]
add esp, 0x14
mov dword [esp + 0x34], eax
jmp 0x520020
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.0055d290
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 0x52008a
cmp edi, 5
jae 0x52008a
test edx, edx
jne 0x520085
cmp edi, 1
jb 0x520090
add edi, 0xffffffff
jmp 0x52008d
add edi, 0xfffffffe
adc edx, 0xffffffff
cmp cx, 0x3c
jg 0x5200eb
cmp cx, 3
jl 0x5200b1
movsx ecx, cx
sub ecx, 3
add edi, 8
mov eax, edi
adc edx, 0
call fcn.00415970
jmp 0x5200c8
movsx eax, cx
mov ecx, 3
sub ecx, eax
add edi, 8
mov eax, edi
adc edx, 0
call fcn.00416010
mov edi, eax
test edx, edx
ja 0x5200eb
jb 0x5200d8
cmp edi, 0x2710
jae 0x5200df
mov edi, 0x2710
jmp 0x5200f0
test edx, edx
jne 0x5200eb
cmp edi, 0x989680
jbe 0x5200f8
mov edi, 0x989680
mov dword [esp + 0x2c], 0
mov ecx, dword [esi + 0x74]
mov edx, dword [esp + 0x20]
cmp dword [esi + 0x78], ecx
jg 0x520115
push 0
push edx
push edi
push 0x4c
push esi
call fcn.004ffef0
add esp, 0x14
jmp 0x520140
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 0x520169
push 0
push 0
push dword [esp + 0x18]
push 0x26
push esi
call fcn.004ffef0
mov edx, dword [esp + 0x24]
add esp, 0x14
mov dword [esp + 0x20], eax
jmp 0x52019c
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 0x52021c
mov esi, dword [esp + 0x10]
mov ebp, eax
test byte [edi + 0xa], 2
mov eax, dword [edi]
jne 0x520209
mov dword [esp + 0x40], fcn.004e9890
mov ecx, 3
mov word [esp + 0x50], cx
mov dword [esp + 0x44], 0x5454d0
mov dword [esp + 0x54], esi
test eax, eax
je 0x5201f8
push eax
lea eax, [esp + 0x40]
push eax
call fcn.0056b2f0
add esp, 8
cmp word [esp + 0x50], 0
je 0x520209
push 0x10
push dword [esp + 0x34]
push dword [edi]
push ebx
call fcn.00527fb0
add esp, 0x10
add edi, 0x30
cmp edi, ebp
jb 0x5201b8
mov esi, dword [esp + 0x38]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
test dword [ebp + 0x2c], 0x100
je 0x520315
mov al, byte [ebx + 0x13]
test al, al
jne 0x520238
inc dword [ebx + 0x2c]
mov edi, dword [ebx + 0x2c]
jmp 0x520247
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 0x520266
push 0
push edi
push dword [esp + 0x18]
push 0x86
push esi
call fcn.004ffef0
add esp, 0x14
jmp 0x520295
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 0x5202be
push edi
push 0
push eax
push 0xb2
push esi
call fcn.004ffef0
add esp, 0x14
mov edx, eax
jmp 0x5202f1
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 0x520444
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 0x520444
movzx ecx, word [ebp + 0x18]
mov edx, dword [ebp + 0x20]
mov dword [esp + 0x28], edx
mov dword [esp + 0x1c], ecx
cmp ecx, 1
jne 0x520355
mov al, byte [ebx + 0x13]
test al, al
jne 0x52033e
inc dword [ebx + 0x2c]
xor edi, edi
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x14], eax
jmp 0x520389
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 0x520389
mov edi, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x14], edx
cmp ecx, edi
jg 0x520370
lea eax, [edx + ecx]
sub edi, ecx
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x1c], edi
jmp 0x52037f
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 0x5203be
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.005253e0
mov edx, dword [esp + 0x3c]
inc edi
add esp, 0x14
cmp edi, ebx
jl 0x520391
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 0x5203eb
mov edi, dword [esp + 0x14]
push edi
push 0
push eax
push 0xb2
push esi
call fcn.004ffef0
add esp, 0x14
mov edx, eax
jmp 0x52041e
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 0x52043b
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 0x52043f
mov edx, dword [esp + 0x1c]
cmp edx, 1
jne 0x52045e
test edi, edi
je 0x520469
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x520469
movzx eax, al
mov dword [ebx + eax*4 + 0x98], edi
inc byte [ebx + 0x13]
jmp 0x520469
cmp edx, dword [ebx + 0x1c]
jle 0x520469
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 0x520487
push edx
push esi
push ecx
call fcn.00511f90
add esp, 0xc
jmp 0x520490
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 0x5204b5
push 0
push edx
push edi
push 5
push esi
call fcn.004ffef0
add esp, 0x14
jmp 0x5204e4
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 0x5204f2
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
je 0x520501
mov eax, 0x5e05ac
jmp 0x52050a
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 0x5205b8
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 0x5205ae
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 0x520590
mov ebp, dword [edx]
test ebp, ebp
je 0x520590
mov ecx, dword [ebp]
mov eax, dword [ebp + 4]
and ecx, dword [esp + 0x68]
and eax, dword [esp + 0x6c]
or ecx, eax
jne 0x52058c
mov eax, dword [ebp + 0x2c]
and eax, 0x400004
cmp eax, 0x400000
je 0x520598
mov ecx, dword [esp + 0x30]
inc ebx
add edx, 0x58
cmp ebx, edi
jl 0x520550
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 0x520020
mov ecx, dword [esp + 0x34]
mov edx, dword [esi + 0x74]
test ecx, ecx
jns 0x5205c6
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
je 0x5205dc
pop edi
pop esi
pop ebp
mov dword [0x5e05b4], 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