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

Disassembly:
push ecx
mov eax, dword [esp + 0xc]
push ebx
push ebp
push esi
push edi
mov ebx, ecx
mov ecx, dword [esp + 0x28]
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 + 0x30]
mov dword [ebx + 0x64], eax
mov eax, dword [esp + 0x2c]
xor edx, edx
mov dword [ebx + 0x68], eax
mov dword [ebx + 0x6c], 4
mov dword [ebx + 0x80], ecx
call fcn.004ad990
mov ecx, dword [esp + 0x24]
mov dword [ebx + 0x7c], eax
mov eax, dword [esp + 0x20]
mov dword [ebx + 0x78], ecx
cmp eax, 0xd
mov dword [ebx + 0x74], eax
jne 0x51e30b
mov dword [ebx + 0x74], edi
lea ecx, [ebx + 0x11e]
push edi
mov dword [esp + 0x24], ecx
call fcn.004e7900
mov ecx, ebx
call fcn.005383b0
cmp eax, 1
je 0x51e7c3
lea esi, [ebx + 0x14]
mov dword [esp + 0x2c], 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 + 0x1c], edx
lea ecx, [eax + 0x7e]
mov dword [esp + 0x30], eax
cmp eax, ecx
ja 0x51e7c3
jmp 0x51e373
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
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 + 0x55ae9c]
cmp ax, 0xfc18
mov dword [esp + 0x28], eax
jle 0x51e478
test dx, dx
jge 0x51e407
mov ecx, ebx
call fcn.004ec7d0
mov edx, eax
cmp dx, 0x10e
mov dword [esp + 0x1c], edx
jne 0x51e403
mov ecx, dword [esp + 0x10]
mov eax, 1
cmp ecx, eax
jne 0x51e3ff
xor edx, edx
mov dword [esp + 0x1c], edx
jmp 0x51e403
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x28]
add eax, edx
test ax, ax
jl 0x51e478
cmp ax, 0x6f
jge 0x51e478
movsx ecx, ax
mov ax, word [ecx*2 + 0x55adbc]
movsx ecx, ax
cmp word [ecx*2 + 0x55afa4], dx
jne 0x51e478
mov edx, dword [ebx + 0x3c]
mov dword [esp + 0x1c], 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 + 0x2c], eax
jmp case.0x51e5d5.21
mov ax, word [ebp + 0x55b020]
cmp ax, 0xfffe
mov dword [esp + 0x28], eax
jne 0x51e503
test dx, dx
jge 0x51e4bb
mov ecx, ebx
call fcn.004ec7d0
mov edx, eax
cmp dx, 0x10e
mov dword [esp + 0x1c], edx
jne 0x51e4bb
mov ecx, dword [esp + 0x10]
mov eax, 1
cmp ecx, eax
jne 0x51e4b7
xor edx, edx
mov dword [esp + 0x1c], edx
jmp 0x51e4bb
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x2c]
mov eax, 0x55adac
cmp word [eax], 0xffff
jne 0x51e4d0
cmp word [eax + 2], cx
je 0x51e4d5
add eax, 4
jmp 0x51e4c4
mov cx, word [eax + 4]
add eax, 4
test cx, cx
jl 0x51e4f2
cmp cx, dx
je 0x51e4f2
mov cx, word [eax + 4]
add eax, 4
test cx, cx
jge 0x51e4e1
mov ax, word [eax + 2]
test ax, ax
mov dword [esp + 0x28], eax
jl 0x51e7d0
test ax, ax
je 0x51e7c3
movsx ecx, ax
shl ecx, 1
mov ebp, dword [esp + 0x30]
movsx edx, word [ecx + 0x55af68]
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 + 0x30], eax
mov eax, edi
lea edi, [edi + ebp*8]
mov dword [esi], edx
mov ebp, dword [esp + 0x30]
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 + 0x55af2c]
mov cx, word [edx*2 + 0x55af18]
mov dword [esp + 0x24], ecx
add cx, word [ebp]
inc ecx
cmp cx, 0x6f
jge 0x51e5b4
movsx ecx, cx
neg edx
mov cx, word [ecx*2 + 0x55adbc]
mov dword [esp + 0x2c], ecx
movsx ecx, cx
movsx ecx, word [ecx*2 + 0x55afa4]
cmp ecx, edx
je 0x51e5c6
movsx edx, word [esp + 0x24]
mov cx, word [edx*2 + 0x55adbc]
mov word [esp + 0x2c], cx
movsx ecx, word [esp + 0x28]
dec ecx
cmp ecx, 0x1c
ja case.0x51e5d5.21
jmp dword [ecx*4 + 0x51e7f4]
add eax, 0xffffffd8
mov ecx, ebx
push eax
call fcn.005380e0
jmp 0x51e7a5
lea edx, [ebx + 0x84]
mov ecx, ebx
push edx
call fcn.00538140
jmp 0x51e7a5
add eax, 0xffffffd8
mov ecx, ebx
push eax
call fcn.00538160
jmp 0x51e7a5
lea ecx, [eax - 0x28]
add eax, 0xffffff88
push ecx
push eax
mov ecx, ebx
call fcn.005381c0
jmp 0x51e7a5
lea edx, [eax - 0x28]
add eax, 0xffffff88
push edx
push eax
mov ecx, ebx
call fcn.00538270
jmp 0x51e7a5
add eax, 0xffffffd8
mov ecx, ebx
push eax
lea eax, [ebx + 0x84]
push eax
call fcn.00538300
jmp 0x51e7a5
add eax, 0xffffffd8
lea ecx, [ebx + 0x84]
push eax
push ecx
mov ecx, ebx
call fcn.00538360
jmp 0x51e7a5
add eax, 0xffffffd8
mov ecx, ebx
push eax
call fcn.005385c0
jmp 0x51e7a5
add eax, 0xffffffd8
mov ecx, ebx
push eax
call fcn.00538580
jmp 0x51e7a5
push eax
push esi
mov ecx, ebx
call fcn.00537c00
jmp case.0x51e5d5.21
lea edx, [eax - 0x28]
push 0
push edx
push eax
push esi
mov ecx, ebx
call fcn.00537c40
jmp case.0x51e5d5.21
lea ecx, [eax - 0x28]
push 1
push ecx
push eax
push esi
mov ecx, ebx
call fcn.00537c40
jmp case.0x51e5d5.21
lea edx, [eax - 0x50]
push 1
add eax, 0xffffffd8
push edx
push eax
push esi
mov ecx, ebx
call fcn.00537c40
jmp case.0x51e5d5.21
lea ecx, [eax - 0x28]
push 1
add eax, 0xffffffb0
push ecx
push eax
push esi
mov ecx, ebx
call fcn.00537c40
jmp case.0x51e5d5.21
push 0
push eax
add eax, 0xffffffd8
mov ecx, ebx
push eax
push esi
call fcn.00537c40
jmp case.0x51e5d5.21
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.0x51e5d5.21
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.0x51e5d5.21
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.0x51e5d5.21
push eax
add eax, 0xffffffb0
push eax
mov ecx, ebx
call fcn.005392d0
jmp 0x51e7a5
push eax
add eax, 0xffffffd8
push eax
push esi
mov ecx, ebx
call fcn.00538530
jmp 0x51e7a5
lea ecx, [eax - 0x50]
push ecx
jmp 0x51e79c
push eax
add eax, 0xffffffb0
push eax
push esi
mov ecx, ebx
call fcn.00537d30
cmp eax, 1
je 0x51e7c3
mov eax, dword [esp + 0x30]
mov edx, dword [ebx + 4]
add eax, 2
add edx, 0x7e
cmp eax, edx
mov dword [esp + 0x30], eax
jbe 0x51e36f
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
pop ecx
ret 0x1c
mov esi, dword [esp + 0x20]
mov ecx, esi
call fcn.004e7860
mov ecx, dword [esp + 0x18]
push esi
push 6
call fcn.004c59b0
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret 0x1c