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

Disassembly:
sub esp, 0x184
push ebx
push esi
xor eax, eax
mov dword [esp + 0x1c], 0
push edi
mov edi, dword [esp + 0x194]
xorps xmm0, xmm0
push 0x14c
push eax
mov dword [esp + 0x1c], eax
mov ebx, dword [edi + 0xc]
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x34]
push eax
mov dword [esp + 0x24], 0
movlpd qword [esp + 0x188], xmm0
movlpd qword [esp + 0x190], xmm0
call fcn.00526b90
movzx eax, word [edi + 0x6c]
lea edx, [edi + 0x70]
movzx ecx, word [edi + 0x6e]
add esp, 0xc
imul ecx, eax
mov dword [esp + 0xdc], edx
mov dword [esp + 0x30], edi
mov dword [esp + 0x3c], 0
mov dword [esp + 0x90], ebx
lea edx, [edx + ecx*2]
mov ecx, dword [esp + 0x198]
mov eax, ecx
mov dword [esp + 0x18c], edx
shr eax, 8
and ecx, 0xfffffeff
and eax, 1
mov dword [esp + 0x198], ecx
cmp word [edi + 0x66], 0
mov dword [esp + 0x154], eax
lea eax, [ebx + 0x100]
mov dword [esp + 0x34], edx
mov dword [esp + 0x8c], eax
mov dword [esp + 0x94], ecx
je 0x515e0e
test dword [edi + 0x48], 0x2000
jne 0x515e0e
xor ecx, ecx
jmp 0x515e13
mov ecx, 1
cmp word [edi + 0x64], 0
mov dword [esp + 0x9c], ecx
ja 0x515e2e
test dword [edi + 0x48], 0x2000
jne 0x515e2e
xor eax, eax
jmp 0x515e33
mov eax, 1
mov dword [esp + 0x98], eax
xor esi, esi
movzx eax, word [edi + 0x62]
dec eax
mov dword [esp + 0xb8], esi
cmp eax, 5
ja case.default.0x515e51
jmp dword [eax*4 + 0x5177b4]
mov ebx, 0xd
jmp 0x515e95
mov ebx, 0xa
jmp 0x515e95
mov ebx, 0xd0a
jmp 0x515e95
mov esi, 1
mov ebx, 0xd0a
mov dword [esp + 0xb8], esi
jmp 0x515e95
mov esi, 2
mov ebx, 0xd0a
mov dword [esp + 0xb8], esi
jmp 0x515e95
xor ebx, ebx
movzx ecx, word [edi + 0x60]
mov dword [esp + 0xc4], ebx
mov dword [esp + 0xbc], 0x7fffffff
mov dword [esp + 0xc0], 0
push ebp
cmp ecx, 1
jne 0x515ec7
mov ebp, ecx
mov dword [esp + 0xcc], ebp
jmp 0x515edd
xor eax, eax
cmp ecx, 2
sete al
inc eax
mov dword [esp + 0x14], eax
mov ebp, eax
mov dword [esp + 0xcc], eax
mov ecx, dword [edi + 0x40]
mov eax, ecx
shr eax, 4
and eax, 1
mov dword [esp + 0xd0], 0x7fffffff
mov dword [esp + 0xd8], eax
mov eax, dword [edi + 0xc]
add eax, 0x340
mov dword [esp + 0xd4], 0
mov dword [esp + 0xdc], eax
movzx eax, word [edi + 0x6e]
mov dword [esp + 0xe4], eax
movzx eax, word [edi + 0x6c]
mov dword [esp + 0xe8], eax
mov eax, ecx
shr eax, 9
and eax, 1
mov dword [esp + 0x14c], eax
mov eax, ecx
shr eax, 0x15
and eax, 1
mov dword [esp + 0x150], eax
mov eax, ecx
shr eax, 0x13
shr ecx, 0x11
and eax, 1
and ecx, 1
mov dword [esp + 0x154], eax
mov dword [esp + 0x15c], ecx
test eax, eax
je 0x515fd3
cmp esi, 1
jne 0x515fa7
mov dword [esp + 0xc0], 0x2029
mov dword [esp + 0xc4], 0xa
cmp ebp, 1
mov dword [esp + 0xd4], 0xa
mov eax, 0xd
mov ecx, 0x2029
cmove eax, ecx
mov dword [esp + 0xd0], eax
jmp 0x515fe0
cmp esi, 2
jne 0x515fb9
mov dword [esp + 0xc0], 0xd
jmp 0x515fc3
movzx eax, bl
mov dword [esp + 0xc0], eax
test esi, esi
jne 0x515f78
movzx eax, bl
mov dword [esp + 0xc4], eax
jmp 0x515f83
mov dword [esp + 0x158], 0
nop
movzx eax, word [edx + 2]
cmp word [edx + eax*2], 0x78
lea edx, [edx + eax*2]
je 0x515fe0
movzx eax, word [edi + 0x68]
lea ebp, [edx + 4]
push dword [edi + 8]
inc eax
mov dword [esp + 0x58], 0x14
push eax
mov eax, dword [edi]
call eax
mov ecx, eax
add esp, 8
mov dword [esp + 0x44], ecx
test ecx, ecx
je 0x5161e7
movzx eax, word [edi + 0x68]
inc eax
push eax
push 1
push ecx
call fcn.00526b90
push ebp
push dword [esp + 0x48]
lea eax, [esp + 0x44]
push eax
call fcn.004fce00
add esp, 0x18
test eax, eax
je 0x51613c
mov edx, dword [esp + 0x19c]
cmp edx, 1
jne 0x51606a
test byte [edi + 0x48], 0x80
je 0x516064
test dword [edi + 0x40], 0x10000
jne 0x516064
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x5c], ecx
jmp 0x516082
mov ecx, dword [esp + 0x54]
jmp 0x516089
mov eax, dword [esp + 0x54]
mov dword [esp + 0x64], eax
lea ecx, [eax + 4]
mov dword [esp + 0x54], ecx
cmp edx, 2
jne 0x516089
mov dword [esp + 0x68], ecx
add ecx, 4
mov dword [esp + 0x54], ecx
test dword [edi + 0x40], 0x800100
je 0x51609d
mov dword [esp + 0x6c], ecx
add ecx, 4
mov dword [esp + 0x54], ecx
cmp dword [esp + 0x74], 0
je 0x5160af
mov dword [esp + 0x74], ecx
add ecx, 4
mov dword [esp + 0x54], ecx
cmp dword [esp + 0xa4], 0
je 0x5160c8
mov eax, ecx
add ecx, 4
mov dword [esp + 0x58], eax
mov dword [esp + 0x54], ecx
jmp 0x5160cc
mov eax, dword [esp + 0x58]
mov edx, ecx
test cl, 4
je 0x5160dc
lea ecx, [edx + 4]
mov dword [esp + 0x54], ecx
mov edx, ecx
test eax, eax
jne 0x5160e4
mov dword [esp + 0x58], edx
cmp dword [esp + 0x78], 0
je 0x516103
movzx eax, word [edi + 0x68]
inc eax
push eax
push 0
push dword [esp + 0x4c]
call fcn.00526b90
mov ecx, dword [esp + 0x60]
add esp, 0xc
movzx eax, word [edi + 0x68]
mov esi, ebp
sub esi, dword [esp + 0x38]
inc eax
push dword [edi + 8]
sar esi, 1
lea eax, [ecx + eax*8]
mov dword [esp + 0x54], eax
xor eax, eax
cmp dword [esp + 0xb0], eax
setne al
add eax, 4
imul eax, esi
push eax
mov eax, dword [edi]
call eax
add esp, 8
mov dword [esp + 0x3c], eax
test eax, eax
jne 0x51615b
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x48]
call eax
add esp, 8
mov eax, 0xffffffd0
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x184
ret
lea ebx, [esi*4]
push ebx
push 0
push eax
call fcn.00526b90
movzx ecx, word [edi + 0x68]
add esp, 0xc
mov eax, dword [esp + 0x50]
lea eax, [eax + ecx*4]
add eax, 4
test dword [edi + 0x40], 0x80010000
mov dword [esp + 0x10], eax
jne 0x5161af
cmp dword [esp + 0xb0], 0
jne 0x5161af
push 1
push 0
push 0
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x48]
lea eax, [esp + 0x44]
push eax
call fcn.0050d730
add esp, 0x18
push ebp
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x38]
push eax
call fcn.0051a850
add esp, 0xc
cmp dword [esp + 0x10], 0x10000
jle 0x5161f7
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x40]
call eax
push dword [edi + 8]
push dword [esp + 0x50]
mov eax, dword [edi + 4]
call eax
add esp, 0x10
pop ebp
pop edi
pop esi
mov eax, 0xffffffd0
pop ebx
add esp, 0x184
ret
cmp dword [esp + 0xac], 0
je 0x516227
mov eax, dword [esp + 0x3c]
push esi
add eax, ebx
push 0
push eax
mov dword [esp + 0x54], eax
call fcn.00526b90
push 0
push dword [esp + 0x48]
lea eax, [esp + 0x44]
push eax
call fcn.0051aba0
add esp, 0x18
push dword [edi + 8]
mov eax, dword [edi]
push 0x5c
call eax
mov esi, eax
add esp, 8
test esi, esi
je 0x51778c
push 0x5c
push 0
push esi
call fcn.00526b90
mov dword [esi + 0x28], edi
push dword [edi + 8]
mov eax, dword [edi]
push 0x1000
call eax
mov dword [esi + 0x30], eax
push dword [edi + 8]
mov eax, dword [edi]
push 0x800
call eax
mov ecx, eax
add esp, 0x1c
mov eax, dword [esi + 0x30]
mov dword [esi + 0x34], ecx
test eax, eax
je 0x51776d
test ecx, ecx
je 0x517761
cmp dword [0x6feddc], 0
mov dword [eax], 0
mov eax, dword [esi + 0x30]
mov dword [eax + 4], 0
mov eax, dword [esi + 0x34]
mov dword [eax], 0
mov eax, dword [esi + 0x34]
mov dword [eax + 4], 0
mov dword [esi + 0x38], 0xffffffff
mov dword [esi + 0x3c], 0xffffffff
mov dword [esi + 0x40], 0xffffffff
mov dword [esi + 0x44], 0xffffffff
mov dword [esi + 0x48], 0xffffffff
mov dword [esi + 0x58], 0xffffffff
jne 0x516316
mov eax, 0x6fedf7
mov dword [0x6feddc], 1
and eax, 0xfffffff0
mov dword [0x6fede4], eax
mov dword [eax], 0x80000000
mov dword [eax + 0x10], 0x7fffffff
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0x80000000
mov dword [eax + 0x30], 0xffffffff
mov dword [eax + 0x34], 0x7fffffff
push dword [esp + 0x10]
mov dword [esp + 0x34], esi
push 0
push 0
push 5
push 5
push 0x11
push 0
push esi
call fcn.0051afd0
movzx eax, word [edi + 0x68]
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.00519b50
mov eax, dword [esp + 0x84]
add esp, 0x28
test eax, eax
je 0x516369
push 0
push 1
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
push 0
push 0xc
push 0
push 8
push 0x20
push esi
call fcn.0051c640
push 0
push 0xc
push 0
push 1
push 0x20
push esi
call fcn.0051c640
push 4
push 0x81
push 0
push 2
push 0x20
push esi
call fcn.0051c640
add esp, 0x48
push 0xc
push 0x81
push 0
push 0xc
push 0x20
push esi
call fcn.0051c640
push 0
push 0x81
push 0
push 3
push 0x20
push esi
call fcn.0051c640
push 0x28
push 0x81
push 0
push 1
push 0x25
push esi
call fcn.0051c640
add esp, 0x48
push 4
push 0x83
push 0
push 0xb
push 0x20
push esi
call fcn.0051c640
push 8
push 0x83
push 0
push 0xa
push 0x20
push esi
call fcn.0051c640
push 1
push 0x40
push 0
push 1
push 0
push 1
push 0x60
push esi
call fcn.0051c880
add esp, 0x50
push 0
push 1
push 0x10
push 0x8d
push 0x20
push esi
call fcn.0051c640
mov eax, dword [esp + 0x98]
add esp, 0x18
cmp eax, dword [esp + 0x84]
jge 0x51644b
lea eax, [esp + 0x30]
push eax
call fcn.005199f0
add esp, 4
mov ebx, dword [esp + 0x19c]
cmp ebx, 2
jne 0x51646f
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x70]
push 0x8d
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
mov eax, dword [esp + 0x70]
test eax, eax
je 0x51648c
push 0
push 0x40
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
mov eax, dword [esp + 0x74]
test eax, eax
je 0x5164a9
push 0
push 0x40
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
cmp dword [edi + 0x40], 0
jl 0x5165ae
lea eax, [esp + 0x30]
push eax
call fcn.005178d0
push esi
mov dword [esp + 0x2c], eax
call fcn.0051c410
add esp, 8
mov dword [esp + 0x14], eax
test dword [edi + 0x40], 0x10000
jne 0x5165bb
cmp ebx, 1
jne 0x5164f5
lea eax, [esp + 0x30]
push eax
call fcn.00513180
add esp, 4
test eax, eax
jne 0x5165c0
mov eax, dword [edi + 0x48]
test al, 0x10
je 0x51658b
mov eax, dword [esp + 0x34]
test byte [eax + 0x48], 0x20
movzx edx, word [eax + 0x58]
mov ecx, edx
je 0x516578
mov eax, 0xff
cmp dx, ax
ja 0x51652a
mov eax, dword [esp + 0x90]
movzx ecx, byte [ecx + eax]
cmp edx, 0x7f
jbe 0x516578
cmp dword [esp + 0x154], 0
jne 0x51653e
cmp dword [esp + 0x15c], 0
je 0x516578
mov ecx, edx
mov eax, edx
shr eax, 7
movzx eax, word [eax*2 + 0x6a6508]
shl eax, 7
and ecx, 0x8000007f
jns 0x51655d
dec ecx
or ecx, 0xffffff80
inc ecx
add eax, ecx
movzx eax, word [eax*2 + 0x6aa908]
lea eax, [eax + eax*2]
mov ax, word [eax*4 + 0x6a22fc]
add ax, dx
movzx ecx, ax
push 0
push ecx
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.00512e40
add esp, 0x10
jmp 0x5165bb
test eax, 0x200
je 0x51659e
lea eax, [esp + 0x30]
push eax
call fcn.005139d0
jmp 0x5165b8
test al, 0x40
je 0x5165bb
lea eax, [esp + 0x30]
push eax
call fcn.00514100
jmp 0x5165b8
push esi
call fcn.0051c410
mov dword [esp + 0x18], eax
add esp, 4
cmp ebx, 1
jne 0x516610
cmp word [edi + 0x66], 0
jbe 0x516610
test dword [edi + 0x40], 0x10000
jne 0x516610
push 0xffffffffffffffff
push 0x40
push 0
push 1
push 0x20
push esi
call fcn.0051c640
movzx eax, word [edi + 0x66]
add eax, eax
push eax
push 0x40
push 0
push 2
push 0
push 3
push 0x60
push esi
call fcn.0051c880
push 0
push 0xc
push 0
push 3
push 4
push esi
call fcn.0051ae50
add esp, 0x50
mov dword [esp + 0x20], eax
cmp dword [esp + 0x5c], 0
je 0x516640
mov edx, dword [edi + 0x48]
mov ecx, edx
movzx eax, word [edi + 0x5c]
shr ecx, 4
and ecx, 1
shr edx, 8
push ecx
and edx, 1
push edx
push eax
lea eax, [esp + 0x3c]
push eax
call fcn.0051a550
add esp, 0x10
mov dword [esp + 0x28], eax
push 0
push 2
push dword [esp + 0x5c]
push 0x8d
push 0x20
push esi
call fcn.0051c640
push 0x10
push 0x8d
push 0
push 9
push 0x20
push esi
call fcn.0051c640
mov eax, dword [esp + 0xa8]
add esp, 0x30
test eax, eax
je 0x51668b
push 0
push 0x40
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x5166bb
sub ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
add ecx, 2
sar ecx, 1
push 0
push 2
mov eax, dword [eax + ecx*4]
sar eax, 3
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0x54]
je 0x5166da
push 0
push 2
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
cmp ebx, 2
jne 0x516730
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x70]
push 0x8d
push 1
push esi
call fcn.0051ae50
push 0
push 2
push dword [esp + 0x84]
mov ebx, eax
push 0x8d
push 0x20
push esi
call fcn.0051c640
push esi
call fcn.0051c410
add esp, 0x34
test ebx, ebx
je 0x51674d
test eax, eax
je 0x51674d
mov ecx, dword [ebx + 8]
and ecx, 0xfffffffd
mov dword [ebx + 0xc], eax
or ecx, 1
mov dword [ebx + 8], ecx
jmp 0x51674d
cmp ebx, 4
jne 0x51674d
push 0
push 2
push dword [esp + 0x6c]
push 0x8d
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
lea eax, [esp + 0x180]
push eax
push ebp
push dword [esp + 0x40]
lea eax, [esp + 0x3c]
push eax
call fcn.00506db0
add esp, 0x10
cmp dword [esi], 0
je 0x5167c2
push esi
call fcn.0051d340
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x4c]
call eax
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x4c]
call eax
mov eax, dword [esp + 0x54]
add esp, 0x14
test eax, eax
je 0x5161e7
nop dword [eax]
push dword [edi + 8]
mov esi, dword [eax]
push eax
mov eax, dword [edi + 4]
call eax
add esp, 8
mov eax, esi
test esi, esi
jne 0x5167a0
pop ebp
pop edi
lea eax, [esi - 0x30]
pop esi
pop ebx
add esp, 0x184
ret
test dword [edi + 0x40], 0x20000000
je 0x5167e2
push 0
push 0xc
push 0
push 2
push 1
push esi
call fcn.0051ae50
add esp, 0x18
mov ebp, eax
jmp 0x5167e4
xor ebp, ebp
cmp dword [esp + 0xa0], 0
je 0x516814
push dword [esp + 0x54]
push 0x8d
push 0
push 2
push 0
push esi
call fcn.0051ae50
push esi
mov dword [esp + 0x48], eax
call fcn.0051c410
add esp, 0x1c
mov dword [esp + 0x1c], eax
push esi
call fcn.0051c410
mov edx, dword [esp + 0x124]
add esp, 4
mov ebx, eax
mov dword [esp + 0xf8], ebx
test edx, edx
je 0x516851
mov ecx, dword [edx]
test ecx, ecx
je 0x51684a
test ebx, ebx
je 0x51684a
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x516831
movzx eax, word [edi + 0x68]
inc eax
push eax
lea eax, [esp + 0x34]
push eax
call fcn.0050c500
push esi
call fcn.0051c410
mov ebx, dword [esp + 0x11c]
mov ecx, eax
add esp, 0xc
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf0], ecx
test ebx, ebx
je 0x5168ac
mov edx, dword [ebx]
test edx, edx
je 0x51689e
test ecx, ecx
je 0x51689e
mov eax, dword [edx + 8]
and eax, 0xfffffffd
mov dword [edx + 0xc], ecx
or eax, 1
mov dword [edx + 8], eax
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x516885
mov ecx, dword [esp + 0xf4]
mov ebx, dword [esp + 0x118]
test ebx, ebx
je 0x5168de
mov edx, dword [ebx]
test edx, edx
je 0x5168d0
test ecx, ecx
je 0x5168d0
mov eax, dword [edx + 8]
and eax, 0xfffffffd
mov dword [edx + 0xc], ecx
or eax, 1
mov dword [edx + 8], eax
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x5168b7
mov ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0x20]
test edx, edx
je 0x5168f9
test ecx, ecx
je 0x5168f9
mov eax, dword [edx + 8]
and eax, 0xfffffffd
mov dword [edx + 0xc], ecx
or eax, 1
mov dword [edx + 8], eax
push 9
push esi
call fcn.0051c480
push 0
push 1
push 0x20
push esi
call fcn.0051d1f0
add esp, 0x18
cmp dword [esp + 0x11c], 0
je 0x516989
push esi
call fcn.0051c410
mov edx, dword [esp + 0x120]
add esp, 4
mov ebx, eax
test edx, edx
je 0x516950
mov ecx, dword [edx]
test ecx, ecx
je 0x516949
test ebx, ebx
je 0x516949
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x516930
push 0xffffffffffffffff
push 0x40
push 0
push 1
push 0x20
push esi
call fcn.0051c640
mov ebx, dword [esp + 0x10c]
push 0x22
push esi
call fcn.0051c380
add esp, 0x20
test eax, eax
je 0x516989
test ebx, ebx
je 0x516989
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebx
or ecx, 1
mov dword [eax + 8], ecx
test dword [edi + 0x40], 0x20000000
je 0x5169b2
push esi
call fcn.0051c410
add esp, 4
test ebp, ebp
je 0x5169b2
test eax, eax
je 0x5169b2
mov ecx, dword [ebp + 8]
and ecx, 0xfffffffd
mov dword [ebp + 0xc], eax
or ecx, 1
mov dword [ebp + 8], ecx
mov ebx, dword [esp + 0x19c]
cmp ebx, 1
je 0x516a1b
push esi
call fcn.0051c410
mov edx, dword [esp + 0x110]
add esp, 4
mov ebx, eax
mov dword [esp + 0xec], ebx
test edx, edx
je 0x516a00
nop dword [eax + eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x5169f9
test ebx, ebx
je 0x5169f9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5169e0
push dword [esp + 0xf0]
lea eax, [esp + 0x34]
push eax
call fcn.00519c60
mov ebx, dword [esp + 0x1a4]
add esp, 8
cmp dword [esp + 0xa0], 0
je 0x516a32
push esi
call fcn.0051c410
add esp, 4
mov dword [esp + 0x18], eax
push dword [esp + 0x188]
lea eax, [esp + 0x34]
push eax
call fcn.004ff7e0
add esp, 8
cmp dword [esi], 0
push esi
je 0x516a9a
call fcn.0051d340
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x4c]
call eax
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x4c]
call eax
mov eax, dword [esp + 0x54]
add esp, 0x14
test eax, eax
je 0x5161e7
push dword [edi + 8]
mov esi, dword [eax]
push eax
mov eax, dword [edi + 4]
call eax
add esp, 8
mov eax, esi
test esi, esi
jne 0x516a78
pop ebp
pop edi
lea eax, [esi - 0x30]
pop esi
pop ebx
add esp, 0x184
ret
call fcn.0051c410
add esp, 4
mov ebp, eax
cmp ebx, 2
jne 0x516b25
push 0
push 0x40
push dword [esp + 0x70]
push 0x8d
push 1
push esi
call fcn.0051ae50
push dword [esp + 0x70]
mov ebx, eax
push 0x8d
push 0
push 1
push 0x20
push esi
call fcn.0051c640
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x9c]
push 0x8d
push 0x20
push esi
call fcn.0051c640
add esp, 0x48
push 0
push 1
push dword [esp + 0x70]
push 0x8d
push 0x20
push esi
call fcn.0051c640
push esi
call fcn.0051c410
add esp, 0x1c
test ebx, ebx
je 0x516b25
test eax, eax
je 0x516b25
mov ecx, dword [ebx + 8]
and ecx, 0xfffffffd
mov dword [ebx + 0xc], eax
or ecx, 1
mov dword [ebx + 8], ecx
cmp dword [edi + 0x40], 0
jl 0x516b48
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x516b48
push eax
push 0x8d
push 0
push 1
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x516b65
sub ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x3c]
add ecx, 2
sar ecx, 1
mov eax, dword [eax + ecx*4]
sar eax, 3
jmp 0x516b69
mov eax, dword [esp + 0x58]
push eax
push 0x8d
push 0
push 2
push 0x20
push esi
call fcn.0051c640
mov eax, dword [edi + 0x40]
add esp, 0x18
test eax, eax
js 0x516c69
mov ebx, dword [esp + 0xfc]
test ebx, ebx
je 0x516c2a
test eax, 0x100
jne 0x516c69
cmp dword [esp + 0x6c], 0
push 0
push 0xc
push 0
je 0x516c10
push 4
push 0x20
push esi
call fcn.0051c640
push 0
push 1
push 0
push 0xc
push 0x20
push esi
call fcn.0051c640
mov ebx, dword [esp + 0x12c]
push 0
push 1
push 0
push 2
push 2
push esi
call fcn.0051ae50
add esp, 0x48
test eax, eax
je 0x516bfb
test ebx, ebx
je 0x516bfb
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebx
or ecx, 1
mov dword [eax + 8], ecx
push 0
push 4
push 0
push 0xc
push 0x20
push esi
call fcn.0051c640
add esp, 0x18
jmp 0x516c69
push 2
push 2
push esi
call fcn.0051ae50
add esp, 0x18
test eax, eax
je 0x516c69
test ebx, ebx
je 0x516c69
mov dword [eax + 0xc], ebx
jmp 0x516c5d
cmp dword [esp + 0x6c], 0
mov ecx, 0xc
push 0
mov eax, 1
cmove eax, ecx
push eax
push 0
push 2
push 2
push esi
call fcn.0051ae50
add esp, 0x18
test eax, eax
je 0x516c69
mov edx, dword [esp + 0x24]
test edx, edx
je 0x516c69
mov dword [eax + 0xc], edx
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
or ecx, 1
mov dword [eax + 8], ecx
mov ebx, dword [esp + 0x28]
test ebx, ebx
je 0x516ca0
push esi
call fcn.0051c410
add esp, 4
mov edx, eax
nop dword [eax]
mov ecx, dword [ebx]
test ecx, ecx
je 0x516c99
test edx, edx
je 0x516c99
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], edx
or eax, 1
mov dword [ecx + 8], eax
mov ebx, dword [ebx + 4]
test ebx, ebx
jne 0x516c80
cmp dword [esp + 0x19c], 2
jne 0x516ce0
mov ebx, dword [esp + 0xec]
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x70]
push 0x8d
push 1
push esi
call fcn.0051ae50
add esp, 0x18
test eax, eax
je 0x516ce0
test ebx, ebx
je 0x516ce0
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebx
or ecx, 1
mov dword [eax + 8], ecx
push 0xffffffffffffffff
push 0x40
push 0
push 1
push 0x20
push esi
call fcn.0051c640
mov ebx, dword [esp + 0x108]
push 0x22
push esi
call fcn.0051c380
add esp, 0x20
test eax, eax
je 0x516d19
test ebx, ebx
je 0x516d19
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebx
or ecx, 1
mov dword [eax + 8], ecx
lea eax, [esp + 0x30]
push eax
call fcn.00514900
add esp, 4
cmp dword [esp + 0xa0], 0
je 0x516e6b
push esi
call fcn.0051c410
mov edx, dword [esp + 0x30]
add esp, 4
test edx, edx
je 0x516d58
test eax, eax
je 0x516d58
mov ecx, dword [edx + 8]
and ecx, 0xfffffffd
mov dword [edx + 0xc], eax
or ecx, 1
mov dword [edx + 8], ecx
push 0
push 8
push 0
push 1
push 0x20
push esi
call fcn.0051c640
push 0x30
push 0x81
push 0
push 3
push 0x25
push esi
call fcn.0051c640
add esp, 0x30
cmp dword [esi], 0
jne 0x516d9d
push 0
push 3
push 4
push 0x40
push 1
push esi
call fcn.00511740
add esp, 0x18
test eax, eax
je 0x516d9d
mov byte [eax], 0xf7
push 1
push esi
call fcn.0051c380
mov ebx, dword [esp + 0x20]
add esp, 8
test eax, eax
je 0x516dc3
test ebx, ebx
je 0x516dc3
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebx
or ecx, 1
mov dword [eax + 8], ecx
cmp dword [esi], 0
jne 0x516de2
push 0
push 3
push 8
push 0x40
push 1
push esi
call fcn.00511740
add esp, 0x18
test eax, eax
je 0x516de2
mov byte [eax], 0xf7
push 0
push esi
call fcn.0051c380
add esp, 8
test eax, eax
je 0x516e08
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x516e08
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], edx
or ecx, 1
mov dword [eax + 8], ecx
push 4
push 0x81
push 0
push 3
push 0x20
push esi
call fcn.0051c640
push 0
push 2
push 0
push 3
push 1
push esi
call fcn.0051ae50
add esp, 0x30
test eax, eax
je 0x516e49
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x516e49
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], edx
or ecx, 1
mov dword [eax + 8], ecx
push 0x22
push esi
call fcn.0051c380
add esp, 8
test eax, eax
je 0x516e6b
test ebx, ebx
je 0x516e6b
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebx
or ecx, 1
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x104]
mov ebx, dword [esp + 0xf0]
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x108], eax
mov dword [esp + 0xb4], 1
test eax, eax
je 0x516f82
mov eax, dword [esp + 0x10]
push dword [edi + 8]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, 7
sar eax, 3
mov dword [esp + 0x8c], eax
push eax
mov eax, dword [edi]
call eax
add esp, 8
mov dword [esp + 0x8c], eax
test eax, eax
je 0x516f26
lea eax, [esp + 0x30]
push eax
call fcn.00507720
add esp, 4
cmp dword [esi], 0
jne 0x516f14
lea eax, [esp + 0x30]
push eax
call fcn.00514900
mov eax, dword [esp + 0x10c]
add esp, 4
mov eax, dword [eax]
mov dword [esp + 0x108], eax
test eax, eax
jne 0x516ee1
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x90]
call eax
add esp, 8
cmp dword [esp + 0x108], 0
je 0x516f82
push esi
call fcn.0051d340
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x4c]
call eax
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x4c]
call eax
mov eax, dword [esp + 0x54]
add esp, 0x14
test eax, eax
je 0x5161e7
nop dword [eax]
push dword [edi + 8]
mov esi, dword [eax]
push eax
mov eax, dword [edi + 4]
call eax
add esp, 8
mov eax, esi
test esi, esi
jne 0x516f60
pop ebp
pop edi
lea eax, [esi - 0x30]
pop esi
pop ebx
add esp, 0x184
ret
push esi
mov dword [esp + 0xb8], 0
mov dword [esp + 0xf4], ebx
call fcn.0051c410
mov edx, dword [esp + 0x12c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x516fd0
nop word [eax + eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x516fc9
test ebx, ebx
je 0x516fc9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x516fb0
cmp dword [esi], 0
jne 0x516ff2
push 0x20
push 0x8d
push 0
push 0
push 1
push esi
call fcn.00511740
add esp, 0x18
test eax, eax
je 0x516ff2
mov byte [eax], 0x8f
push 0
push 2
push 4
push 0x8d
push 0x20
push esi
call fcn.0051c640
push 0
push 8
push 0
push 1
push 0x20
push esi
call fcn.0051c640
push 0x2000
push 0x40
push 0
push 0xa
push 0
push 2
push 0x62
push esi
call fcn.0051c880
add esp, 0x50
push 0
push 0x81
push 0
push 1
push 0x20
push esi
call fcn.0051c640
push 0
push 3
push 0
push 0xa
push 0x20
push esi
call fcn.0051c640
push fcn.0051da30
push 0x40
push 0x111
push 0x24
push esi
call fcn.0051bcc0
add esp, 0x44
push 0
push 0x40
push 0
push 1
push 0
push esi
call fcn.0051ae50
push 0
push 0xa
push 0
push 3
push 0x20
push esi
mov ebx, eax
call fcn.0051c640
push 0
push 1
push 0
push 0xa
push 0x20
push esi
call fcn.0051c640
add esp, 0x48
push 0
push 0x8d
push 0
push 1
push 0x20
push esi
call fcn.0051c640
push 4
push 0x8d
push 0
push 2
push 0x20
push esi
call fcn.0051c640
push 0
push 1
push 0x80
push esi
call fcn.0051cfc0
add esp, 0x40
push esi
call fcn.0051c410
add esp, 4
test ebx, ebx
je 0x5170f6
test eax, eax
je 0x5170f6
mov ecx, dword [ebx + 8]
and ecx, 0xfffffffd
mov dword [ebx + 0xc], eax
or ecx, 1
mov dword [ebx + 8], ecx
push 0xffffffffffffffd2
push 0x40
push 0
push 1
push 0x20
push esi
call fcn.0051c640
mov ebx, dword [esp + 0x108]
push 0x22
push esi
call fcn.0051c380
add esp, 0x20
test eax, eax
je 0x51712f
test ebx, ebx
je 0x51712f
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebx
or ecx, 1
mov dword [eax + 8], ecx
push esi
call fcn.0051c410
mov edx, dword [esp + 0x128]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517165
mov ecx, dword [edx]
test ecx, ecx
je 0x51715e
test ebx, ebx
je 0x51715e
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x517145
push 0xffffffffffffffd1
push 0x40
push 0
push 1
push 0x20
push esi
call fcn.0051c640
mov ebx, dword [esp + 0x108]
push 0x22
push esi
call fcn.0051c380
add esp, 0x20
test eax, eax
je 0x51719e
test ebx, ebx
je 0x51719e
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebx
or ecx, 1
mov dword [eax + 8], ecx
cmp dword [esp + 0x12c], 0
je 0x5171ed
push esi
call fcn.0051c410
mov edx, dword [esp + 0x130]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5171e0
nop
mov ecx, dword [edx]
test ecx, ecx
je 0x5171d9
test ebx, ebx
je 0x5171d9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5171c0
lea eax, [esp + 0x30]
push eax
call fcn.0050eed0
add esp, 4
cmp dword [esp + 0x130], 0
je 0x51723d
push esi
call fcn.0051c410
mov edx, dword [esp + 0x134]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517230
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517229
test ebx, ebx
je 0x517229
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x517210
lea eax, [esp + 0x30]
push eax
call fcn.004fd470
add esp, 4
cmp dword [esp + 0x134], 0
je 0x51728d
push esi
call fcn.0051c410
mov edx, dword [esp + 0x138]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517280
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517279
test ebx, ebx
je 0x517279
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x517260
lea eax, [esp + 0x30]
push eax
call fcn.004fc970
add esp, 4
cmp dword [esp + 0x138], 0
je 0x5172dd
push esi
call fcn.0051c410
mov edx, dword [esp + 0x13c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5172d0
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x5172c9
test ebx, ebx
je 0x5172c9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5172b0
lea eax, [esp + 0x30]
push eax
call fcn.004fca90
add esp, 4
cmp dword [esp + 0x13c], 0
je 0x51732d
push esi
call fcn.0051c410
mov edx, dword [esp + 0x140]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517320
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517319
test ebx, ebx
je 0x517319
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x517300
lea eax, [esp + 0x30]
push eax
call fcn.004fc970
add esp, 4
cmp dword [esp + 0x140], 0
je 0x51737d
push esi
call fcn.0051c410
mov edx, dword [esp + 0x144]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517370
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517369
test ebx, ebx
je 0x517369
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x517350
lea eax, [esp + 0x30]
push eax
call fcn.0050e1e0
add esp, 4
cmp dword [esp + 0x144], 0
je 0x5173cd
push esi
call fcn.0051c410
mov edx, dword [esp + 0x148]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5173c0
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x5173b9
test ebx, ebx
je 0x5173b9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5173a0
lea eax, [esp + 0x30]
push eax
call fcn.0050e360
add esp, 4
cmp dword [esp + 0x148], 0
je 0x517487
push esi
call fcn.0051c410
mov edx, dword [esp + 0x14c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517411
mov ecx, dword [edx]
test ecx, ecx
je 0x51740a
test ebx, ebx
je 0x51740a
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5173f1
movzx eax, word [edi + 0x68]
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0x34]
push eax
call fcn.0050ed30
push 0
push 1
push 0
push 2
push 4
push esi
call fcn.0051ae50
add esp, 0x20
test eax, eax
je 0x517455
mov edx, dword [esp + 0x14]
test edx, edx
je 0x517455
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], edx
or ecx, 1
mov dword [eax + 8], ecx
push 0
push 1
push 0
push 2
push 0x20
push esi
call fcn.0051c640
push 0x22
push esi
call fcn.0051c380
add esp, 0x20
test eax, eax
je 0x517487
test ebp, ebp
je 0x517487
mov ecx, dword [eax + 8]
and ecx, 0xfffffffd
mov dword [eax + 0xc], ebp
or ecx, 1
mov dword [eax + 8], ecx
cmp dword [esp + 0x16c], 0
je 0x5174d4
push esi
call fcn.0051c410
mov edx, dword [esp + 0x170]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5174c7
mov ecx, dword [edx]
test ecx, ecx
je 0x5174c0
test ebx, ebx
je 0x5174c0
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5174a7
lea eax, [esp + 0x30]
push eax
call fcn.0050f540
add esp, 4
cmp dword [esp + 0x170], 0
je 0x517521
push esi
call fcn.0051c410
mov edx, dword [esp + 0x174]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517514
mov ecx, dword [edx]
test ecx, ecx
je 0x51750d
test ebx, ebx
je 0x51750d
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5174f4
lea eax, [esp + 0x30]
push eax
call fcn.0050f730
add esp, 4
cmp dword [esp + 0x174], 0
je 0x51756e
push esi
call fcn.0051c410
mov edx, dword [esp + 0x178]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517561
mov ecx, dword [edx]
test ecx, ecx
je 0x51755a
test ebx, ebx
je 0x51755a
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x517541
lea eax, [esp + 0x30]
push eax
call fcn.0050f140
add esp, 4
cmp dword [esp + 0x178], 0
je 0x5175bd
push esi
call fcn.0051c410
mov edx, dword [esp + 0x17c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5175b0
nop
mov ecx, dword [edx]
test ecx, ecx
je 0x5175a9
test ebx, ebx
je 0x5175a9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x517590
lea eax, [esp + 0x30]
push eax
call fcn.0050f310
add esp, 4
cmp dword [esp + 0x164], 0
je 0x51760d
push esi
call fcn.0051c410
mov edx, dword [esp + 0x168]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517600
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x5175f9
test ebx, ebx
je 0x5175f9
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x5175e0
lea eax, [esp + 0x30]
push eax
call fcn.0050eaa0
add esp, 4
cmp dword [esp + 0x168], 0
je 0x51765d
push esi
call fcn.0051c410
mov edx, dword [esp + 0x16c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517650
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517649
test ebx, ebx
je 0x517649
mov eax, dword [ecx + 8]
and eax, 0xfffffffd
mov dword [ecx + 0xc], ebx
or eax, 1
mov dword [ecx + 8], eax
mov edx, dword [edx + 4]
test edx, edx
jne 0x517630
lea eax, [esp + 0x30]
push eax
call fcn.0050ebc0
add esp, 4
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x48]
call eax
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x48]
call eax
push esi
call fcn.0051d510
mov ebp, dword [esi + 0x54]
mov ebx, eax
push esi
call fcn.0051d340
add esp, 0x18
test ebx, ebx
jne 0x5176c2
mov eax, dword [esp + 0x40]
test eax, eax
je 0x5161e7
nop dword [eax]
push dword [edi + 8]
mov esi, dword [eax]
push eax
mov eax, dword [edi + 4]
call eax
add esp, 8
mov eax, esi
test esi, esi
jne 0x5176a0
pop ebp
pop edi
lea eax, [esi - 0x30]
pop esi
pop ebx
add esp, 0x184
ret
mov esi, dword [edi + 0x10]
test esi, esi
jne 0x517730
push dword [edi + 8]
mov eax, dword [edi]
push 0x2c
call eax
mov esi, eax
add esp, 8
test esi, esi
jne 0x517712
push ebx
call fcn.0051d3a0
mov eax, dword [esp + 0x44]
add esp, 4
test eax, eax
je 0x5161e7
push dword [edi + 8]
mov esi, dword [eax]
push eax
mov eax, dword [edi + 4]
call eax
add esp, 8
mov eax, esi
test esi, esi
jne 0x5176f0
pop ebp
pop edi
lea eax, [esi - 0x30]
pop esi
pop ebx
add esp, 0x184
ret
push 0x2c
push 0
push esi
call fcn.00526b90
movzx eax, word [edi + 0x68]
add esp, 0xc
inc eax
mov dword [esi + 0x24], eax
mov eax, dword [edi + 0x50]
mov dword [esi + 0x28], eax
mov dword [edi + 0x10], esi
mov eax, dword [esp + 0x19c]
xor ecx, ecx
cmp eax, 1
je 0x517745
cmp eax, 2
setne cl
inc ecx
mov dword [esi + ecx*4], ebx
mov eax, dword [esp + 0x40]
mov dword [esi + ecx*4 + 0x18], ebp
pop ebp
pop edi
mov dword [esi + ecx*4 + 0xc], eax
xor eax, eax
pop esi
pop ebx
add esp, 0x184
ret
push dword [edi + 8]
push eax
mov eax, dword [edi + 4]
call eax
add esp, 8
mov eax, dword [esi + 0x34]
test eax, eax
je 0x517780
push dword [edi + 8]
push eax
mov eax, dword [edi + 4]
call eax
add esp, 8
push dword [edi + 8]
mov eax, dword [edi + 4]
push esi
call eax
add esp, 8
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x48]
call eax
push dword [edi + 8]
push dword [esp + 0x48]
jmp 0x5161df
pop edi
pop esi
mov eax, 0xffffffd4
pop ebx
add esp, 0x184
ret