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

Disassembly:
sub esp, 8
mov eax, dword [esp + 0x10]
push ebx
push ebp
push esi
push edi
mov ebx, ecx
mov ecx, dword [esp + 0x2c]
xor edi, edi
mov dword [esp + 0x10], edi
mov dword [ebx + 8], eax
mov dword [ebx + 0xc], eax
call fcn.00411a20
mov ecx, dword [esp + 0x34]
mov dword [ebx + 0x64], eax
mov eax, dword [esp + 0x30]
xor edx, edx
mov dword [ebx + 0x68], eax
mov dword [ebx + 0x6c], 4
mov dword [ebx + 0x80], ecx
call fcn.004ad990
mov edx, dword [ebx + 0x64]
lea ecx, [ebx + 0x84]
push edx
mov dword [ebx + 0x7c], eax
mov dword [esp + 0x18], ecx
call fcn.004cf930
mov eax, dword [esp + 0x28]
mov dword [ebx + 0x78], eax
mov eax, dword [esp + 0x24]
cmp eax, 0xd
mov dword [ebx + 0x74], eax
jne 0x51e8e0
mov dword [ebx + 0x74], edi
mov ecx, ebx
call fcn.00537b20
lea esi, [ebx + 0x14]
mov dword [esp + 0x30], edi
or edx, 0xffffffff
mov dword [esi], edi
mov dword [esi + 4], edi
mov dword [esi + 8], edi
mov dword [esi + 0xc], edi
mov dword [esi + 0x14], edi
mov dword [esi + 0x18], edi
mov dword [esi + 0x1c], edi
mov dword [esi + 0x10], edi
mov dword [esi + 0x24], edi
mov dword [esi + 0x20], edi
mov eax, dword [ebx + 4]
mov edi, dword [ebx]
sub edi, 0x28
mov dword [esp + 0x20], edx
lea ecx, [eax + 0x7e]
mov dword [esp + 0x34], eax
cmp eax, ecx
ja 0x51ee46
jmp 0x51e92f
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
add edi, 0x28
mov word [eax], cx
mov eax, dword [esi]
mov dword [edi], eax
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 8]
mov dword [edi + 8], eax
mov eax, dword [esi + 0xc]
mov dword [edi + 0xc], eax
mov eax, dword [esi + 0x10]
mov dword [edi + 0x10], eax
mov eax, dword [esi + 0x14]
mov dword [edi + 0x14], eax
mov eax, dword [esi + 0x18]
mov dword [edi + 0x18], eax
mov eax, dword [esi + 0x1c]
mov dword [edi + 0x1c], eax
mov eax, dword [esi + 0x20]
movsx ebp, cx
mov dword [edi + 0x20], eax
mov eax, dword [esi + 0x24]
shl ebp, 1
mov dword [edi + 0x24], eax
mov ax, word [ebp + 0x55b1e8]
cmp ax, 0xfc18
mov dword [esp + 0x2c], eax
jle 0x51ea34
test dx, dx
jge 0x51e9c3
mov ecx, ebx
call fcn.004ec7d0
mov edx, eax
cmp dx, 0x10e
mov dword [esp + 0x20], edx
jne 0x51e9bf
mov ecx, dword [esp + 0x10]
mov eax, 1
cmp ecx, eax
jne 0x51e9bb
xor edx, edx
mov dword [esp + 0x20], edx
jmp 0x51e9bf
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
add eax, edx
test ax, ax
jl 0x51ea34
cmp ax, 0x9d
jge 0x51ea34
movsx ecx, ax
mov ax, word [ecx*2 + 0x55b0ac]
movsx ecx, ax
cmp word [ecx*2 + 0x55b334], dx
jne 0x51ea34
mov edx, dword [ebx + 0x3c]
mov dword [esp + 0x20], 0xffffffff
mov dword [esi], edx
mov ecx, dword [ebx + 0x40]
mov dword [esi + 4], ecx
mov edx, dword [ebx + 0x44]
mov dword [esi + 8], edx
mov ecx, dword [ebx + 0x48]
mov dword [esi + 0xc], ecx
mov edx, dword [ebx + 0x4c]
mov dword [esi + 0x10], edx
mov ecx, dword [ebx + 0x50]
mov dword [esi + 0x14], ecx
mov edx, dword [ebx + 0x54]
mov dword [esi + 0x18], edx
mov ecx, dword [ebx + 0x58]
mov dword [esi + 0x1c], ecx
mov edx, dword [ebx + 0x5c]
mov dword [esi + 0x20], edx
mov ecx, dword [ebx + 0x60]
mov dword [esi + 0x24], ecx
mov dword [esp + 0x30], eax
jmp case.default.0x51eb92
mov ax, word [ebp + 0x55b3d4]
cmp ax, 0xfffe
mov dword [esp + 0x2c], eax
jne 0x51eabf
test dx, dx
jge 0x51ea77
mov ecx, ebx
call fcn.004ec7d0
mov edx, eax
cmp dx, 0x10e
mov dword [esp + 0x20], edx
jne 0x51ea77
mov ecx, dword [esp + 0x10]
mov eax, 1
cmp ecx, eax
jne 0x51ea73
xor edx, edx
mov dword [esp + 0x20], edx
jmp 0x51ea77
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x30]
mov eax, 0x55b09c
cmp word [eax], 0xffff
jne 0x51ea8c
cmp word [eax + 2], cx
je 0x51ea91
add eax, 4
jmp 0x51ea80
mov cx, word [eax + 4]
add eax, 4
test cx, cx
jl 0x51eaae
cmp cx, dx
je 0x51eaae
mov cx, word [eax + 4]
add eax, 4
test cx, cx
jge 0x51ea9d
mov ax, word [eax + 2]
test ax, ax
mov dword [esp + 0x2c], eax
jl 0x51ee17
test ax, ax
je 0x51ee46
movsx ecx, ax
shl ecx, 1
mov ebp, dword [esp + 0x34]
movsx edx, word [ecx + 0x55b2e8]
mov eax, edx
neg eax
lea eax, [ebp + eax*2]
mov ebp, edx
neg ebp
shl ebp, 2
sub ebp, edx
mov edx, dword [edi + ebp*8 + 0x28]
mov dword [esp + 0x34], eax
mov eax, edi
lea edi, [edi + ebp*8]
mov dword [esi], edx
mov ebp, dword [esp + 0x34]
mov edx, dword [edi + 0x2c]
mov dword [esi + 4], edx
mov edx, dword [edi + 0x30]
mov dword [esi + 8], edx
mov edx, dword [edi + 0x34]
mov dword [esi + 0xc], edx
mov edx, dword [edi + 0x38]
mov dword [esi + 0x10], edx
mov edx, dword [edi + 0x3c]
mov dword [esi + 0x14], edx
mov edx, dword [edi + 0x40]
mov dword [esi + 0x18], edx
mov edx, dword [edi + 0x44]
mov dword [esi + 0x1c], edx
mov edx, dword [edi + 0x48]
mov dword [esi + 0x20], edx
mov edx, dword [edi + 0x4c]
mov dword [esi + 0x24], edx
movsx edx, word [ecx + 0x55b29c]
mov cx, word [edx*2 + 0x55b288]
mov dword [esp + 0x28], ecx
add cx, word [ebp]
inc ecx
cmp cx, 0x9d
jge 0x51eb71
movsx ecx, cx
neg edx
mov cx, word [ecx*2 + 0x55b0ac]
mov dword [esp + 0x30], ecx
movsx ecx, cx
movsx ecx, word [ecx*2 + 0x55b334]
cmp ecx, edx
je 0x51eb83
movsx edx, word [esp + 0x28]
mov cx, word [edx*2 + 0x55b0ac]
mov word [esp + 0x30], cx
movsx ecx, word [esp + 0x2c]
dec ecx
cmp ecx, 0x1f
ja case.default.0x51eb92
jmp dword [ecx*4 + 0x51ee58]
add eax, 0xffffffd8
mov ecx, ebx
push eax
call fcn.00538e40
jmp 0x51ed10
add eax, 0xffffffd8
mov ecx, ebx
push eax
call fcn.00538eb0
jmp 0x51ed10
add eax, 0xffffffd8
mov ecx, ebx
push eax
call fcn.00538ef0
jmp 0x51ed10
lea edx, [eax - 0x28]
add eax, 0xffffff88
push edx
push eax
mov ecx, ebx
call fcn.00539090
jmp 0x51ed10
lea ecx, [eax - 0x28]
add eax, 0xffffff88
push ecx
push eax
mov ecx, ebx
call fcn.005390d0
jmp 0x51ed10
lea edx, [eax - 0x28]
lea ecx, [eax - 0x78]
push edx
add eax, 0xffffff38
push ecx
push eax
mov ecx, ebx
call fcn.005391d0
jmp 0x51ed10
lea edx, [eax - 0x28]
lea ecx, [eax - 0x78]
push edx
add eax, 0xffffff38
push ecx
push eax
mov ecx, ebx
call fcn.00539210
jmp 0x51ed10
lea edx, [eax - 0x28]
add eax, 0xffffff88
push edx
push eax
mov ecx, ebx
call fcn.005392d0
jmp 0x51ed10
lea ecx, [eax - 0x28]
add eax, 0xffffff88
push ecx
push eax
mov ecx, ebx
call fcn.00539350
jmp 0x51ed10
lea edx, [eax - 0x28]
add eax, 0xffffff88
push edx
push eax
mov ecx, ebx
call fcn.005393e0
jmp 0x51ed10
add eax, 0xffffffd8
mov ecx, ebx
push eax
call fcn.00539470
jmp 0x51ed10
push eax
push esi
mov ecx, ebx
call fcn.00537c00
jmp case.default.0x51eb92
lea ecx, [eax - 0x28]
push 0
push ecx
push eax
push esi
mov ecx, ebx
call fcn.00537c40
jmp case.default.0x51eb92
lea edx, [eax - 0x28]
push 1
push edx
push eax
push esi
mov ecx, ebx
call fcn.00537c40
jmp case.default.0x51eb92
lea ecx, [eax - 0x50]
push 1
add eax, 0xffffffd8
push ecx
push eax
push esi
mov ecx, ebx
call fcn.00537c40
jmp case.default.0x51eb92
lea edx, [eax - 0x28]
push 1
add eax, 0xffffffb0
push edx
push eax
push esi
mov ecx, ebx
call fcn.00537c40
jmp case.default.0x51eb92
lea ecx, [eax - 0x50]
lea edx, [eax - 0x28]
push ecx
push edx
push eax
push esi
mov ecx, ebx
call fcn.00537ce0
jmp case.default.0x51eb92
push eax
lea ecx, [eax - 0x28]
add eax, 0xffffffb0
push ecx
push eax
push esi
mov ecx, ebx
call fcn.00537ce0
jmp case.default.0x51eb92
push 0
push eax
add eax, 0xffffffd8
mov ecx, ebx
push eax
push esi
call fcn.00537c40
jmp case.default.0x51eb92
push eax
add eax, 0xffffffb0
push eax
push esi
mov ecx, ebx
call fcn.00537d30
cmp eax, 1
je 0x51ee46
mov eax, dword [esp + 0x34]
mov ecx, dword [ebx + 4]
add eax, 2
add ecx, 0x7e
cmp eax, ecx
mov dword [esp + 0x34], eax
jbe 0x51e92b
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 8
ret 0x1c
lea edx, [eax - 0x50]
push edx
jmp 0x51ed07
mov dword [esi], 4
mov ecx, dword [eax + 4]
mov dword [esi + 4], ecx
mov edx, dword [eax + 8]
mov dword [esi + 8], edx
mov ecx, dword [eax + 0xc]
mov dword [esi + 0xc], ecx
mov edx, dword [eax + 0x10]
mov dword [esi + 0x10], edx
jmp case.default.0x51eb92
lea ecx, [eax - 0x28]
push ecx
push eax
push esi
mov ecx, ebx
call fcn.00537ca0
jmp case.default.0x51eb92
push eax
add eax, 0xffffffd8
push eax
push esi
mov ecx, ebx
call fcn.00537ca0
jmp case.default.0x51eb92
mov dword [esi], 4
mov edx, dword [eax + 4]
mov dword [esi + 4], edx
mov ecx, dword [eax + 8]
mov dword [esi + 8], ecx
mov edx, dword [eax + 0xc]
mov dword [esi + 0xc], edx
mov dword [esi + 0x10], 0
jmp case.default.0x51eb92
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
neg ecx
adc edx, 0
mov dword [eax + 4], ecx
neg edx
mov dword [eax + 8], edx
mov dword [esi], 4
mov ecx, dword [eax + 4]
mov dword [esi + 4], ecx
mov edx, dword [eax + 8]
mov dword [esi + 8], edx
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], 0
jmp case.default.0x51eb92
mov ecx, dword [eax - 0x24]
mov edx, dword [eax - 0x20]
neg ecx
adc edx, 0
mov dword [eax - 0x24], ecx
neg edx
mov dword [eax - 0x20], edx
mov dword [esi], 4
mov ecx, dword [eax - 0x24]
mov dword [esi + 4], ecx
mov edx, dword [eax - 0x20]
mov dword [esi + 8], edx
mov eax, dword [eax - 0x1c]
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], 0
jmp case.default.0x51eb92
mov esi, dword [esp + 0x14]
mov ebx, dword [ebx + 0x1b8]
mov ecx, esi
mov dword [esi + 0xc], ebx
mov dword [esi + 0x20], ebx
call fcn.004cf590
mov ecx, dword [esp + 0x1c]
push esi
push 4
call fcn.004c59b0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 8
ret 0x1c
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 8
ret 0x1c