Function at 0x515c38
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.00526970
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 0x515bee
test dword [edi + 0x48], 0x2000
jne 0x515bee
xor ecx, ecx
jmp 0x515bf3
mov ecx, 1
cmp word [edi + 0x64], 0
mov dword [esp + 0x9c], ecx
ja 0x515c0e
test dword [edi + 0x48], 0x2000
jne 0x515c0e
xor eax, eax
jmp 0x515c13
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.0x515c31
jmp dword [eax*4 + 0x517594]
mov ebx, 0xd
jmp 0x515c75
mov ebx, 0xa
jmp 0x515c75
mov ebx, 0xd0a
jmp 0x515c75
mov esi, 1
mov ebx, 0xd0a
mov dword [esp + 0xb8], esi
jmp 0x515c75
mov esi, 2
mov ebx, 0xd0a
mov dword [esp + 0xb8], esi
jmp 0x515c75
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 0x515ca7
mov ebp, ecx
mov dword [esp + 0xcc], ebp
jmp 0x515cbd
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 0x515db3
cmp esi, 1
jne 0x515d87
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 0x515dc0
cmp esi, 2
jne 0x515d99
mov dword [esp + 0xc0], 0xd
jmp 0x515da3
movzx eax, bl
mov dword [esp + 0xc0], eax
test esi, esi
jne 0x515d58
movzx eax, bl
mov dword [esp + 0xc4], eax
jmp 0x515d63
mov dword [esp + 0x158], 0
nop
movzx eax, word [edx + 2]
cmp word [edx + eax*2], 0x78
lea edx, [edx + eax*2]
je 0x515dc0
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 0x515fc7
movzx eax, word [edi + 0x68]
inc eax
push eax
push 1
push ecx
call fcn.00526970
push ebp
push dword [esp + 0x48]
lea eax, [esp + 0x44]
push eax
call fcn.004fcbe0
add esp, 0x18
test eax, eax
je 0x515f1c
mov edx, dword [esp + 0x19c]
cmp edx, 1
jne 0x515e4a
test byte [edi + 0x48], 0x80
je 0x515e44
test dword [edi + 0x40], 0x10000
jne 0x515e44
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x5c], ecx
jmp 0x515e62
mov ecx, dword [esp + 0x54]
jmp 0x515e69
mov eax, dword [esp + 0x54]
mov dword [esp + 0x64], eax
lea ecx, [eax + 4]
mov dword [esp + 0x54], ecx
cmp edx, 2
jne 0x515e69
mov dword [esp + 0x68], ecx
add ecx, 4
mov dword [esp + 0x54], ecx
test dword [edi + 0x40], 0x800100
je 0x515e7d
mov dword [esp + 0x6c], ecx
add ecx, 4
mov dword [esp + 0x54], ecx
cmp dword [esp + 0x74], 0
je 0x515e8f
mov dword [esp + 0x74], ecx
add ecx, 4
mov dword [esp + 0x54], ecx
cmp dword [esp + 0xa4], 0
je 0x515ea8
mov eax, ecx
add ecx, 4
mov dword [esp + 0x58], eax
mov dword [esp + 0x54], ecx
jmp 0x515eac
mov eax, dword [esp + 0x58]
mov edx, ecx
test cl, 4
je 0x515ebc
lea ecx, [edx + 4]
mov dword [esp + 0x54], ecx
mov edx, ecx
test eax, eax
jne 0x515ec4
mov dword [esp + 0x58], edx
cmp dword [esp + 0x78], 0
je 0x515ee3
movzx eax, word [edi + 0x68]
inc eax
push eax
push 0
push dword [esp + 0x4c]
call fcn.00526970
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 0x515f3b
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.00526970
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 0x515f8f
cmp dword [esp + 0xb0], 0
jne 0x515f8f
push 1
push 0
push 0
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x48]
lea eax, [esp + 0x44]
push eax
call fcn.0050d510
add esp, 0x18
push ebp
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x38]
push eax
call fcn.0051a630
add esp, 0xc
cmp dword [esp + 0x10], 0x10000
jle 0x515fd7
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 0x516007
mov eax, dword [esp + 0x3c]
push esi
add eax, ebx
push 0
push eax
mov dword [esp + 0x54], eax
call fcn.00526970
push 0
push dword [esp + 0x48]
lea eax, [esp + 0x44]
push eax
call fcn.0051a980
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 0x51756c
push 0x5c
push 0
push esi
call fcn.00526970
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 0x51754d
test ecx, ecx
je 0x517541
cmp dword [0x700d5c], 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 0x5160f6
mov eax, 0x700d77
mov dword [0x700d5c], 1
and eax, 0xfffffff0
mov dword [0x700d64], 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.0051adb0
movzx eax, word [edi + 0x68]
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0x54]
push eax
call fcn.00519930
mov eax, dword [esp + 0x84]
add esp, 0x28
test eax, eax
je 0x516149
push 0
push 1
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c420
add esp, 0x18
push 0
push 0xc
push 0
push 8
push 0x20
push esi
call fcn.0051c420
push 0
push 0xc
push 0
push 1
push 0x20
push esi
call fcn.0051c420
push 4
push 0x81
push 0
push 2
push 0x20
push esi
call fcn.0051c420
add esp, 0x48
push 0xc
push 0x81
push 0
push 0xc
push 0x20
push esi
call fcn.0051c420
push 0
push 0x81
push 0
push 3
push 0x20
push esi
call fcn.0051c420
push 0x28
push 0x81
push 0
push 1
push 0x25
push esi
call fcn.0051c420
add esp, 0x48
push 4
push 0x83
push 0
push 0xb
push 0x20
push esi
call fcn.0051c420
push 8
push 0x83
push 0
push 0xa
push 0x20
push esi
call fcn.0051c420
push 1
push 0x40
push 0
push 1
push 0
push 1
push 0x60
push esi
call fcn.0051c660
add esp, 0x50
push 0
push 1
push 0x10
push 0x8d
push 0x20
push esi
call fcn.0051c420
mov eax, dword [esp + 0x98]
add esp, 0x18
cmp eax, dword [esp + 0x84]
jge 0x51622b
lea eax, [esp + 0x30]
push eax
call fcn.005197d0
add esp, 4
mov ebx, dword [esp + 0x19c]
cmp ebx, 2
jne 0x51624f
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x70]
push 0x8d
push 0x20
push esi
call fcn.0051c420
add esp, 0x18
mov eax, dword [esp + 0x70]
test eax, eax
je 0x51626c
push 0
push 0x40
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c420
add esp, 0x18
mov eax, dword [esp + 0x74]
test eax, eax
je 0x516289
push 0
push 0x40
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c420
add esp, 0x18
cmp dword [edi + 0x40], 0
jl 0x51638e
lea eax, [esp + 0x30]
push eax
call fcn.005176b0
push esi
mov dword [esp + 0x2c], eax
call fcn.0051c1f0
add esp, 8
mov dword [esp + 0x14], eax
test dword [edi + 0x40], 0x10000
jne 0x51639b
cmp ebx, 1
jne 0x5162d5
lea eax, [esp + 0x30]
push eax
call fcn.00512f60
add esp, 4
test eax, eax
jne 0x5163a0
mov eax, dword [edi + 0x48]
test al, 0x10
je 0x51636b
mov eax, dword [esp + 0x34]
test byte [eax + 0x48], 0x20
movzx edx, word [eax + 0x58]
mov ecx, edx
je 0x516358
mov eax, 0xff
cmp dx, ax
ja 0x51630a
mov eax, dword [esp + 0x90]
movzx ecx, byte [ecx + eax]
cmp edx, 0x7f
jbe 0x516358
cmp dword [esp + 0x154], 0
jne 0x51631e
cmp dword [esp + 0x15c], 0
je 0x516358
mov ecx, edx
mov eax, edx
shr eax, 7
movzx eax, word [eax*2 + 0x6a80c8]
shl eax, 7
and ecx, 0x8000007f
jns 0x51633d
dec ecx
or ecx, 0xffffff80
inc ecx
add eax, ecx
movzx eax, word [eax*2 + 0x6ac4c8]
lea eax, [eax + eax*2]
mov ax, word [eax*4 + 0x6a3ebc]
add ax, dx
movzx ecx, ax
push 0
push ecx
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.00512c20
add esp, 0x10
jmp 0x51639b
test eax, 0x200
je 0x51637e
lea eax, [esp + 0x30]
push eax
call fcn.005137b0
jmp 0x516398
test al, 0x40
je 0x51639b
lea eax, [esp + 0x30]
push eax
call fcn.00513ee0
jmp 0x516398
push esi
call fcn.0051c1f0
mov dword [esp + 0x18], eax
add esp, 4
cmp ebx, 1
jne 0x5163f0
cmp word [edi + 0x66], 0
jbe 0x5163f0
test dword [edi + 0x40], 0x10000
jne 0x5163f0
push 0xffffffffffffffff
push 0x40
push 0
push 1
push 0x20
push esi
call fcn.0051c420
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.0051c660
push 0
push 0xc
push 0
push 3
push 4
push esi
call fcn.0051ac30
add esp, 0x50
mov dword [esp + 0x20], eax
cmp dword [esp + 0x5c], 0
je 0x516420
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.0051a330
add esp, 0x10
mov dword [esp + 0x28], eax
push 0
push 2
push dword [esp + 0x5c]
push 0x8d
push 0x20
push esi
call fcn.0051c420
push 0x10
push 0x8d
push 0
push 9
push 0x20
push esi
call fcn.0051c420
mov eax, dword [esp + 0xa8]
add esp, 0x30
test eax, eax
je 0x51646b
push 0
push 0x40
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c420
add esp, 0x18
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x51649b
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.0051c420
add esp, 0x18
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0x54]
je 0x5164ba
push 0
push 2
push eax
push 0x8d
push 0x20
push esi
call fcn.0051c420
add esp, 0x18
cmp ebx, 2
jne 0x516510
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x70]
push 0x8d
push 1
push esi
call fcn.0051ac30
push 0
push 2
push dword [esp + 0x84]
mov ebx, eax
push 0x8d
push 0x20
push esi
call fcn.0051c420
push esi
call fcn.0051c1f0
add esp, 0x34
test ebx, ebx
je 0x51652d
test eax, eax
je 0x51652d
mov ecx, dword [ebx + 8]
and ecx, 0xfffffffd
mov dword [ebx + 0xc], eax
or ecx, 1
mov dword [ebx + 8], ecx
jmp 0x51652d
cmp ebx, 4
jne 0x51652d
push 0
push 2
push dword [esp + 0x6c]
push 0x8d
push 0x20
push esi
call fcn.0051c420
add esp, 0x18
lea eax, [esp + 0x180]
push eax
push ebp
push dword [esp + 0x40]
lea eax, [esp + 0x3c]
push eax
call fcn.00506b90
add esp, 0x10
cmp dword [esi], 0
je 0x5165a2
push esi
call fcn.0051d120
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 0x515fc7
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 0x516580
pop ebp
pop edi
lea eax, [esi - 0x30]
pop esi
pop ebx
add esp, 0x184
ret
test dword [edi + 0x40], 0x20000000
je 0x5165c2
push 0
push 0xc
push 0
push 2
push 1
push esi
call fcn.0051ac30
add esp, 0x18
mov ebp, eax
jmp 0x5165c4
xor ebp, ebp
cmp dword [esp + 0xa0], 0
je 0x5165f4
push dword [esp + 0x54]
push 0x8d
push 0
push 2
push 0
push esi
call fcn.0051ac30
push esi
mov dword [esp + 0x48], eax
call fcn.0051c1f0
add esp, 0x1c
mov dword [esp + 0x1c], eax
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x124]
add esp, 4
mov ebx, eax
mov dword [esp + 0xf8], ebx
test edx, edx
je 0x516631
mov ecx, dword [edx]
test ecx, ecx
je 0x51662a
test ebx, ebx
je 0x51662a
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 0x516611
movzx eax, word [edi + 0x68]
inc eax
push eax
lea eax, [esp + 0x34]
push eax
call fcn.0050c2e0
push esi
call fcn.0051c1f0
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 0x51668c
mov edx, dword [ebx]
test edx, edx
je 0x51667e
test ecx, ecx
je 0x51667e
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 0x516665
mov ecx, dword [esp + 0xf4]
mov ebx, dword [esp + 0x118]
test ebx, ebx
je 0x5166be
mov edx, dword [ebx]
test edx, edx
je 0x5166b0
test ecx, ecx
je 0x5166b0
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 0x516697
mov ecx, dword [esp + 0xf4]
mov edx, dword [esp + 0x20]
test edx, edx
je 0x5166d9
test ecx, ecx
je 0x5166d9
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.0051c260
push 0
push 1
push 0x20
push esi
call fcn.0051cfd0
add esp, 0x18
cmp dword [esp + 0x11c], 0
je 0x516769
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x120]
add esp, 4
mov ebx, eax
test edx, edx
je 0x516730
mov ecx, dword [edx]
test ecx, ecx
je 0x516729
test ebx, ebx
je 0x516729
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 0x516710
push 0xffffffffffffffff
push 0x40
push 0
push 1
push 0x20
push esi
call fcn.0051c420
mov ebx, dword [esp + 0x10c]
push 0x22
push esi
call fcn.0051c160
add esp, 0x20
test eax, eax
je 0x516769
test ebx, ebx
je 0x516769
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 0x516792
push esi
call fcn.0051c1f0
add esp, 4
test ebp, ebp
je 0x516792
test eax, eax
je 0x516792
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 0x5167fb
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x110]
add esp, 4
mov ebx, eax
mov dword [esp + 0xec], ebx
test edx, edx
je 0x5167e0
nop dword [eax + eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x5167d9
test ebx, ebx
je 0x5167d9
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 0x5167c0
push dword [esp + 0xf0]
lea eax, [esp + 0x34]
push eax
call fcn.00519a40
mov ebx, dword [esp + 0x1a4]
add esp, 8
cmp dword [esp + 0xa0], 0
je 0x516812
push esi
call fcn.0051c1f0
add esp, 4
mov dword [esp + 0x18], eax
push dword [esp + 0x188]
lea eax, [esp + 0x34]
push eax
call fcn.004ff5c0
add esp, 8
cmp dword [esi], 0
push esi
je 0x51687a
call fcn.0051d120
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 0x515fc7
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 0x516858
pop ebp
pop edi
lea eax, [esi - 0x30]
pop esi
pop ebx
add esp, 0x184
ret
call fcn.0051c1f0
add esp, 4
mov ebp, eax
cmp ebx, 2
jne 0x516905
push 0
push 0x40
push dword [esp + 0x70]
push 0x8d
push 1
push esi
call fcn.0051ac30
push dword [esp + 0x70]
mov ebx, eax
push 0x8d
push 0
push 1
push 0x20
push esi
call fcn.0051c420
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x9c]
push 0x8d
push 0x20
push esi
call fcn.0051c420
add esp, 0x48
push 0
push 1
push dword [esp + 0x70]
push 0x8d
push 0x20
push esi
call fcn.0051c420
push esi
call fcn.0051c1f0
add esp, 0x1c
test ebx, ebx
je 0x516905
test eax, eax
je 0x516905
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 0x516928
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x516928
push eax
push 0x8d
push 0
push 1
push 0x20
push esi
call fcn.0051c420
add esp, 0x18
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x516945
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 0x516949
mov eax, dword [esp + 0x58]
push eax
push 0x8d
push 0
push 2
push 0x20
push esi
call fcn.0051c420
mov eax, dword [edi + 0x40]
add esp, 0x18
test eax, eax
js 0x516a49
mov ebx, dword [esp + 0xfc]
test ebx, ebx
je 0x516a0a
test eax, 0x100
jne 0x516a49
cmp dword [esp + 0x6c], 0
push 0
push 0xc
push 0
je 0x5169f0
push 4
push 0x20
push esi
call fcn.0051c420
push 0
push 1
push 0
push 0xc
push 0x20
push esi
call fcn.0051c420
mov ebx, dword [esp + 0x12c]
push 0
push 1
push 0
push 2
push 2
push esi
call fcn.0051ac30
add esp, 0x48
test eax, eax
je 0x5169db
test ebx, ebx
je 0x5169db
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.0051c420
add esp, 0x18
jmp 0x516a49
push 2
push 2
push esi
call fcn.0051ac30
add esp, 0x18
test eax, eax
je 0x516a49
test ebx, ebx
je 0x516a49
mov dword [eax + 0xc], ebx
jmp 0x516a3d
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.0051ac30
add esp, 0x18
test eax, eax
je 0x516a49
mov edx, dword [esp + 0x24]
test edx, edx
je 0x516a49
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 0x516a80
push esi
call fcn.0051c1f0
add esp, 4
mov edx, eax
nop dword [eax]
mov ecx, dword [ebx]
test ecx, ecx
je 0x516a79
test edx, edx
je 0x516a79
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 0x516a60
cmp dword [esp + 0x19c], 2
jne 0x516ac0
mov ebx, dword [esp + 0xec]
push 0xffffffffffffffff
push 0x40
push dword [esp + 0x70]
push 0x8d
push 1
push esi
call fcn.0051ac30
add esp, 0x18
test eax, eax
je 0x516ac0
test ebx, ebx
je 0x516ac0
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.0051c420
mov ebx, dword [esp + 0x108]
push 0x22
push esi
call fcn.0051c160
add esp, 0x20
test eax, eax
je 0x516af9
test ebx, ebx
je 0x516af9
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.005146e0
add esp, 4
cmp dword [esp + 0xa0], 0
je 0x516c4b
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x30]
add esp, 4
test edx, edx
je 0x516b38
test eax, eax
je 0x516b38
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.0051c420
push 0x30
push 0x81
push 0
push 3
push 0x25
push esi
call fcn.0051c420
add esp, 0x30
cmp dword [esi], 0
jne 0x516b7d
push 0
push 3
push 4
push 0x40
push 1
push esi
call fcn.00511520
add esp, 0x18
test eax, eax
je 0x516b7d
mov byte [eax], 0xf7
push 1
push esi
call fcn.0051c160
mov ebx, dword [esp + 0x20]
add esp, 8
test eax, eax
je 0x516ba3
test ebx, ebx
je 0x516ba3
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 0x516bc2
push 0
push 3
push 8
push 0x40
push 1
push esi
call fcn.00511520
add esp, 0x18
test eax, eax
je 0x516bc2
mov byte [eax], 0xf7
push 0
push esi
call fcn.0051c160
add esp, 8
test eax, eax
je 0x516be8
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x516be8
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.0051c420
push 0
push 2
push 0
push 3
push 1
push esi
call fcn.0051ac30
add esp, 0x30
test eax, eax
je 0x516c29
mov edx, dword [esp + 0x1c]
test edx, edx
je 0x516c29
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.0051c160
add esp, 8
test eax, eax
je 0x516c4b
test ebx, ebx
je 0x516c4b
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 0x516d62
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 0x516d06
lea eax, [esp + 0x30]
push eax
call fcn.00507500
add esp, 4
cmp dword [esi], 0
jne 0x516cf4
lea eax, [esp + 0x30]
push eax
call fcn.005146e0
mov eax, dword [esp + 0x10c]
add esp, 4
mov eax, dword [eax]
mov dword [esp + 0x108], eax
test eax, eax
jne 0x516cc1
push dword [edi + 8]
mov eax, dword [edi + 4]
push dword [esp + 0x90]
call eax
add esp, 8
cmp dword [esp + 0x108], 0
je 0x516d62
push esi
call fcn.0051d120
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 0x515fc7
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 0x516d40
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.0051c1f0
mov edx, dword [esp + 0x12c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x516db0
nop word [eax + eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x516da9
test ebx, ebx
je 0x516da9
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 0x516d90
cmp dword [esi], 0
jne 0x516dd2
push 0x20
push 0x8d
push 0
push 0
push 1
push esi
call fcn.00511520
add esp, 0x18
test eax, eax
je 0x516dd2
mov byte [eax], 0x8f
push 0
push 2
push 4
push 0x8d
push 0x20
push esi
call fcn.0051c420
push 0
push 8
push 0
push 1
push 0x20
push esi
call fcn.0051c420
push 0x2000
push 0x40
push 0
push 0xa
push 0
push 2
push 0x62
push esi
call fcn.0051c660
add esp, 0x50
push 0
push 0x81
push 0
push 1
push 0x20
push esi
call fcn.0051c420
push 0
push 3
push 0
push 0xa
push 0x20
push esi
call fcn.0051c420
push fcn.0051d810
push 0x40
push 0x111
push 0x24
push esi
call fcn.0051baa0
add esp, 0x44
push 0
push 0x40
push 0
push 1
push 0
push esi
call fcn.0051ac30
push 0
push 0xa
push 0
push 3
push 0x20
push esi
mov ebx, eax
call fcn.0051c420
push 0
push 1
push 0
push 0xa
push 0x20
push esi
call fcn.0051c420
add esp, 0x48
push 0
push 0x8d
push 0
push 1
push 0x20
push esi
call fcn.0051c420
push 4
push 0x8d
push 0
push 2
push 0x20
push esi
call fcn.0051c420
push 0
push 1
push 0x80
push esi
call fcn.0051cda0
add esp, 0x40
push esi
call fcn.0051c1f0
add esp, 4
test ebx, ebx
je 0x516ed6
test eax, eax
je 0x516ed6
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.0051c420
mov ebx, dword [esp + 0x108]
push 0x22
push esi
call fcn.0051c160
add esp, 0x20
test eax, eax
je 0x516f0f
test ebx, ebx
je 0x516f0f
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.0051c1f0
mov edx, dword [esp + 0x128]
add esp, 4
mov ebx, eax
test edx, edx
je 0x516f45
mov ecx, dword [edx]
test ecx, ecx
je 0x516f3e
test ebx, ebx
je 0x516f3e
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 0x516f25
push 0xffffffffffffffd1
push 0x40
push 0
push 1
push 0x20
push esi
call fcn.0051c420
mov ebx, dword [esp + 0x108]
push 0x22
push esi
call fcn.0051c160
add esp, 0x20
test eax, eax
je 0x516f7e
test ebx, ebx
je 0x516f7e
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 0x516fcd
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x130]
add esp, 4
mov ebx, eax
test edx, edx
je 0x516fc0
nop
mov ecx, dword [edx]
test ecx, ecx
je 0x516fb9
test ebx, ebx
je 0x516fb9
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 0x516fa0
lea eax, [esp + 0x30]
push eax
call fcn.0050ecb0
add esp, 4
cmp dword [esp + 0x130], 0
je 0x51701d
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x134]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517010
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517009
test ebx, ebx
je 0x517009
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 0x516ff0
lea eax, [esp + 0x30]
push eax
call fcn.004fd250
add esp, 4
cmp dword [esp + 0x134], 0
je 0x51706d
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x138]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517060
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517059
test ebx, ebx
je 0x517059
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 0x517040
lea eax, [esp + 0x30]
push eax
call fcn.004fc750
add esp, 4
cmp dword [esp + 0x138], 0
je 0x5170bd
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x13c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5170b0
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x5170a9
test ebx, ebx
je 0x5170a9
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 0x517090
lea eax, [esp + 0x30]
push eax
call fcn.004fc870
add esp, 4
cmp dword [esp + 0x13c], 0
je 0x51710d
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x140]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517100
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x5170f9
test ebx, ebx
je 0x5170f9
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 0x5170e0
lea eax, [esp + 0x30]
push eax
call fcn.004fc750
add esp, 4
cmp dword [esp + 0x140], 0
je 0x51715d
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x144]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517150
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517149
test ebx, ebx
je 0x517149
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 0x517130
lea eax, [esp + 0x30]
push eax
call fcn.0050dfc0
add esp, 4
cmp dword [esp + 0x144], 0
je 0x5171ad
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x148]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5171a0
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517199
test ebx, ebx
je 0x517199
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 0x517180
lea eax, [esp + 0x30]
push eax
call fcn.0050e140
add esp, 4
cmp dword [esp + 0x148], 0
je 0x517267
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x14c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5171f1
mov ecx, dword [edx]
test ecx, ecx
je 0x5171ea
test ebx, ebx
je 0x5171ea
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 0x5171d1
movzx eax, word [edi + 0x68]
lea eax, [eax*2 + 2]
push eax
lea eax, [esp + 0x34]
push eax
call fcn.0050eb10
push 0
push 1
push 0
push 2
push 4
push esi
call fcn.0051ac30
add esp, 0x20
test eax, eax
je 0x517235
mov edx, dword [esp + 0x14]
test edx, edx
je 0x517235
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.0051c420
push 0x22
push esi
call fcn.0051c160
add esp, 0x20
test eax, eax
je 0x517267
test ebp, ebp
je 0x517267
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 0x5172b4
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x170]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5172a7
mov ecx, dword [edx]
test ecx, ecx
je 0x5172a0
test ebx, ebx
je 0x5172a0
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 0x517287
lea eax, [esp + 0x30]
push eax
call fcn.0050f320
add esp, 4
cmp dword [esp + 0x170], 0
je 0x517301
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x174]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5172f4
mov ecx, dword [edx]
test ecx, ecx
je 0x5172ed
test ebx, ebx
je 0x5172ed
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 0x5172d4
lea eax, [esp + 0x30]
push eax
call fcn.0050f510
add esp, 4
cmp dword [esp + 0x174], 0
je 0x51734e
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x178]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517341
mov ecx, dword [edx]
test ecx, ecx
je 0x51733a
test ebx, ebx
je 0x51733a
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 0x517321
lea eax, [esp + 0x30]
push eax
call fcn.0050ef20
add esp, 4
cmp dword [esp + 0x178], 0
je 0x51739d
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x17c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517390
nop
mov ecx, dword [edx]
test ecx, ecx
je 0x517389
test ebx, ebx
je 0x517389
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 0x517370
lea eax, [esp + 0x30]
push eax
call fcn.0050f0f0
add esp, 4
cmp dword [esp + 0x164], 0
je 0x5173ed
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x168]
add esp, 4
mov ebx, eax
test edx, edx
je 0x5173e0
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x5173d9
test ebx, ebx
je 0x5173d9
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 0x5173c0
lea eax, [esp + 0x30]
push eax
call fcn.0050e880
add esp, 4
cmp dword [esp + 0x168], 0
je 0x51743d
push esi
call fcn.0051c1f0
mov edx, dword [esp + 0x16c]
add esp, 4
mov ebx, eax
test edx, edx
je 0x517430
nop dword [eax]
mov ecx, dword [edx]
test ecx, ecx
je 0x517429
test ebx, ebx
je 0x517429
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 0x517410
lea eax, [esp + 0x30]
push eax
call fcn.0050e9a0
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.0051d2f0
mov ebp, dword [esi + 0x54]
mov ebx, eax
push esi
call fcn.0051d120
add esp, 0x18
test ebx, ebx
jne 0x5174a2
mov eax, dword [esp + 0x40]
test eax, eax
je 0x515fc7
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 0x517480
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 0x517510
push dword [edi + 8]
mov eax, dword [edi]
push 0x2c
call eax
mov esi, eax
add esp, 8
test esi, esi
jne 0x5174f2
push ebx
call fcn.0051d180
mov eax, dword [esp + 0x44]
add esp, 4
test eax, eax
je 0x515fc7
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 0x5174d0
pop ebp
pop edi
lea eax, [esi - 0x30]
pop esi
pop ebx
add esp, 0x184
ret
push 0x2c
push 0
push esi
call fcn.00526970
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 0x517525
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 0x517560
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 0x515fbf
pop edi
pop esi
mov eax, 0xffffffd4
pop ebx
add esp, 0x184
ret