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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
lea eax, [esp - 0x3c8]
cmp eax, dword [ecx + 8]
jbe 0x51ffd5
sub esp, 0x448
mov eax, 0
lea edi, [esp + 0x2a8]
call fcn.0044cd16
mov dword [esp + 0x238], eax
mov dword [esp + 0x23c], eax
mov dword [esp + 0x240], eax
lea edi, [esp + 0x130]
call fcn.0044cd08
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov ecx, dword [esp + 0x450]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x454]
mov dword [esp + 8], edx
call fcn.0047c110
lea edi, [esp + 0xc]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x464]
mov ebx, dword [esp + 0x45c]
cmp edx, ebx
jne 0x51cfde
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
lea esi, [esp + 0x468]
call fcn.0044d1f4
call fcn.0051ffe0
movzx eax, byte [esp + 0x24]
test al, al
je 0x51cf8d
xor eax, eax
xor ecx, ecx
mov edx, dword [esp + 0x464]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov dword [esp + 0x230], 0
mov dword [esp + 0x234], 0
lea eax, [0x7e17e7]
mov dword [esp + 0x230], eax
mov dword [esp + 0x234], 0x12
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x230]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
jmp 0x51cf6a
mov dword [esp + 0x12c], edi
mov dword [esp + 0x50], eax
mov dword [esp + 0xd8], ecx
mov edx, dword [eax + 0x50]
mov dword [esp], ecx
call edx
lea eax, [esp + 0xc]
mov dword [esp + 0x128], eax
mov ecx, dword [esp + 4]
cmp ecx, 0x14
je 0x51f5f4
mov eax, dword [esp + 0x458]
mov dword [esp], eax
mov ecx, dword [esp + 0x45c]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x460]
mov dword [esp + 8], edx
mov ebx, dword [esp + 0x464]
mov dword [esp + 0xc], ebx
call fcn.0051c300
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x10]
movzx ebp, byte [esp + 0x1c]
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x14]
test edx, edx
jne 0x51f5d8
mov dword [esp + 0xbc], eax
movzx eax, byte [esp + 0x469]
test al, al
je 0x51f5ae
movzx eax, byte [esp + 0x46a]
test al, al
je 0x51f5a4
mov eax, 1
mov dword [esp + 0x124], ecx
mov dword [esp + 0xb8], edx
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0x45c]
cmp ecx, edx
je 0x51f532
cmp eax, ebx
jne 0x51f468
mov eax, dword [esp + 0x470]
mov eax, dword [eax]
cmp edi, eax
jne 0x51f468
test esi, esi
jne 0x51f45e
mov dword [esp + 0xb4], ebx
mov eax, dword [0xbb4c08]
mov ebx, dword [esp + 0x50]
cmp eax, ebx
je 0x51f3d0
test esi, esi
jg 0x51d1f8
mov eax, dword [0xbb4bf0]
cmp ebx, eax
je 0x51d173
mov dword [esp + 0x200], 0
mov dword [esp + 0x204], 0
lea eax, [0x7ef51f]
mov dword [esp + 0x200], eax
mov dword [esp + 0x204], 0x2d
lea eax, [0x8f93d0]
mov dword [esp], eax
lea eax, [esp + 0x200]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], eax
mov dword [esp + 0x488], ecx
add esp, 0x448
ret
mov dword [esp], ebx
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov eax, dword [0xbb4bf4]
mov dword [esp + 8], eax
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
je 0x51d101
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
mov byte [esp + 0xc], 1
call fcn.0047b180
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x480], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x484], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov eax, dword [esp + 0x458]
mov dword [esp], eax
mov dword [esp + 4], edx
mov ebx, dword [esp + 0x460]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
call fcn.0051c300
mov eax, dword [esp + 0x20]
movzx ecx, byte [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
test esi, esi
jne 0x51f3b4
mov dword [esp + 0x124], edi
mov dword [esp + 0xb8], esi
mov dword [esp + 0x44], ebx
mov dword [esp + 0x4c], ebp
mov byte [esp + 0x42], cl
mov dword [esp + 0x48], edx
mov dword [esp + 0x54], eax
mov esi, dword [esp + 0x50]
mov dword [esp], esi
mov edi, dword [esp + 0xd8]
mov dword [esp + 4], edi
call fcn.00520880
movzx eax, byte [esp + 8]
mov ecx, dword [esp + 0xc]
movzx edx, byte [esp + 0x10]
movzx ebx, byte [esp + 0x11]
test bl, bl
je 0x51f2e0
cmp ecx, 0x13
jne 0x51f2d1
mov ebx, dword [esp + 0x4c]
test ebx, ebx
jne 0x51f2b9
mov ebp, dword [esp + 0x44]
cmp ebp, 0x12
jg 0x51f29c
cmp ebp, 0xc
jne 0x51f288
mov ecx, ebp
cmp ebp, 0x17
jne 0x51d2d3
cmp ecx, 0x18
jne 0x51d2d3
test ebx, ebx
jne 0x51d2d3
mov ebp, 0x18
mov esi, edx
movzx edx, byte [esp + 0x47c]
test dl, dl
je 0x51f281
mov edx, 0x11
mov dword [esp + 0x70], edx
movzx ebp, byte [esp + 0x469]
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x51f236
mov edi, eax
mov eax, 0
mov dword [esp + 0x74], eax
mov eax, edi
je 0x51f1e4
mov ebp, dword [esp + 0x74]
je 0x51f1a9
mov dword [esp + 0xbc], edx
test al, al
je 0x51f194
xchg edi, eax
test al, al
xchg edi, eax
je 0x51ef2b
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x54]
lea ebp, [edx + eax]
cmp ebp, edx
jge 0x51ef16
mov esi, 1
xchg esi, eax
test al, al
xchg esi, eax
jne 0x51eea7
test ebp, ebp
jl 0x51ffc7
cmp edx, ebp
ja 0x51ffc7
mov esi, dword [esp + 0x460]
cmp ebp, esi
ja 0x51ffc7
mov dword [esp + 0xbc], ebp
sub esi, edx
mov dword [esp + 0xa4], esi
xchg esi, ebx
neg ebx
xchg esi, ebx
sar esi, 0x1f
and edx, esi
mov dword [esp + 0xb4], edx
mov esi, dword [esp + 0x458]
lea edi, [esi + edx]
mov dword [esp + 0x10c], edi
mov edi, dword [0xbb4c08]
mov ecx, dword [esp + 0x50]
cmp edi, ecx
je 0x51ec9e
mov ebx, dword [0xbb4bf8]
cmp ebx, ecx
je 0x51ea57
mov ebx, dword [0xbb4be0]
cmp ebx, ecx
je 0x51e796
mov ebx, dword [0xbb4c10]
cmp ebx, ecx
je 0x51e547
mov ebx, dword [0xbb4be8]
cmp ebx, ecx
je 0x51e466
mov ebx, dword [0xbb4bf0]
cmp ebx, ecx
je 0x51e3c3
mov ebx, dword [0xbb4bd8]
cmp ebx, ecx
je 0x51e253
mov ebx, dword [esp + 0x454]
mov edi, ebx
and ebx, 0x1f
cmp ebx, 6
ja 0x51d7ba
cmp ebx, 1
jne 0x51d584
cmp eax, 1
jne 0x51d520
movzx eax, byte [esi + edx]
test al, al
jne 0x51d4ac
xor eax, eax
xor ecx, ecx
xor edx, edx
test edx, edx
je 0x51d465
mov dword [esp + 0x480], ebp
mov dword [esp + 0x484], edx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov dword [esp + 0x88], edx
mov dword [esp + 0xfc], eax
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov dword [esp + 8], edi
mov byte [esp + 0xc], cl
call fcn.0047b180
mov eax, dword [esp + 0xfc]
mov edx, dword [esp + 0x88]
mov ebp, dword [esp + 0xbc]
jmp 0x51d449
cmp al, 0xff
jne 0x51d4bc
xor eax, eax
mov ecx, 1
xor edx, edx
jmp 0x51d445
mov dword [esp + 0x1b0], 0
mov dword [esp + 0x1b4], 0
lea eax, [0x7e00a7]
mov dword [esp + 0x1b0], eax
mov dword [esp + 0x1b4], 0xf
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x1b0]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0xbc]
mov edi, dword [esp + 0x454]
xor ecx, ecx
jmp 0x51d445
mov dword [esp + 0x1b8], 0
mov dword [esp + 0x1bc], 0
lea eax, [0x7e00a7]
mov dword [esp + 0x1b8], eax
mov dword [esp + 0x1bc], 0xf
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x1b8]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov ebp, dword [esp + 0xbc]
mov edi, dword [esp + 0x454]
xor ecx, ecx
jmp 0x51d445
cmp ebx, 2
jne 0x51d6df
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov ecx, dword [esp + 0x450]
mov dword [esp + 4], ecx
mov dword [esp + 8], edi
call fcn.0047c110
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + 0x7c]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 4]
cmp eax, 4
jne 0x51d667
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.0051ad90
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
test ecx, ecx
je 0x51d61d
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov dword [esp + 0xe4], eax
mov dword [esp + 0x8c], ecx
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
sar edx, 0x1f
mov dword [esp + 0x10], edx
call fcn.0047b4f0
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0x8c]
jmp 0x51d5fa
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.0051ab00
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
test ecx, ecx
jne 0x51d5fa
mov dword [esp + 0xf0], eax
mov dword [esp + 0x94], ecx
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
call fcn.0047b4f0
mov eax, dword [esp + 0xf0]
mov ecx, dword [esp + 0x94]
jmp 0x51d5fa
lea ecx, [ebx - 5]
cmp ecx, 1
jbe 0x51d58d
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov dword [esp + 8], edi
call fcn.0047c110
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + 0x80]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp + 0x190], 0
mov dword [esp + 0x194], 0
mov dword [esp], 0
lea edx, [0x7df6a2]
mov dword [esp + 4], edx
mov dword [esp + 8], 0xd
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
call fcn.0043bf20
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x190], ecx
mov dword [esp + 0x194], eax
lea eax, [0x8f93d0]
mov dword [esp], eax
lea eax, [esp + 0x190]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
cmp ebx, 0x17
je 0x51dfbe
cmp ebx, 0x18
jne 0x51da73
mov ecx, dword [esp + 0x70]
cmp ecx, 0x13
jg 0x51d9bf
cmp ecx, 0xc
je 0x51d98c
cmp ecx, 0x12
je 0x51d959
cmp ecx, 0x13
je 0x51d926
mov dword [esp + 0x1a0], 0
mov dword [esp + 0x1a4], 0
lea eax, [0x771460]
mov dword [esp], eax
mov dword [esp + 4], ecx
call fcn.00407550
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dword [esp + 0x1a0], ecx
mov dword [esp + 0x1a4], eax
lea eax, [0x7ec476]
mov dword [esp], eax
mov dword [esp + 4], 0x26
lea eax, [esp + 0x1a0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 1
mov dword [esp + 0x10], 1
call fcn.004bca60
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x198], 0
mov dword [esp + 0x19c], 0
mov dword [esp + 0x198], ecx
mov dword [esp + 0x19c], eax
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x198]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
xor edx, edx
xor ebx, ebx
test ecx, ecx
je 0x51d8db
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov dword [esp + 0xb8], ecx
mov dword [esp + 0x124], eax
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ebx
call fcn.0047ba60
mov eax, dword [esp + 0x124]
mov ecx, dword [esp + 0xb8]
jmp 0x51d8b8
mov ecx, dword [esp + 0x10c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.0051bfa0
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
jmp 0x51d8b4
mov ecx, dword [esp + 0x10c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.0051beb0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
jmp 0x51d8b4
mov ecx, dword [esp + 0x10c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.0051c210
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
jmp 0x51d8b4
cmp ecx, 0x14
je 0x51da3c
cmp ecx, 0x16
je 0x51da09
cmp ecx, 0x1b
jne 0x51d7f4
mov dword [esp], 0
mov ecx, dword [esp + 0x10c]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xc], eax
call fcn.0043c0a0
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
xor ecx, ecx
xor eax, eax
jmp 0x51d8b4
mov ecx, dword [esp + 0x10c]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.0051c130
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
jmp 0x51d8b4
mov dword [esp], 0
mov ecx, dword [esp + 0x10c]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xc], eax
call fcn.0043c0a0
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
xor ecx, ecx
xor eax, eax
jmp 0x51d8b4
cmp ebx, 0x19
jne 0x51d6eb
lea edx, [esp + 8]
mov dword [esp + 0x120], edx
xor ebx, ebx
jmp 0x51da96
mov eax, dword [esp + 0x68]
lea ebx, [eax + 1]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x68], ebx
mov eax, dword [ecx + 0x64]
mov edx, dword [esp + 0xd8]
mov dword [esp], edx
call eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x68]
cmp ecx, eax
jge 0x51db60
mov eax, dword [esp + 0x50]
mov edx, dword [eax + 0x2c]
mov dword [esp + 4], ecx
mov ebx, dword [esp + 0xd8]
mov dword [esp], ebx
call edx
lea edi, [esp + 0x414]
mov esi, dword [esp + 0x120]
call fcn.0044d1ae
mov eax, dword [esp + 0x420]
test eax, eax
je 0x51da8b
mov dword [esp + 0x1a8], 0
mov dword [esp + 0x1ac], 0
lea eax, [0x7ea153]
mov dword [esp + 0x1a8], eax
mov dword [esp + 0x1ac], 0x21
lea eax, [0x8f93d0]
mov dword [esp], eax
lea eax, [esp + 0x1a8]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + 0x64]
mov edx, dword [esp + 0xd8]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 4]
test eax, eax
jg 0x51dddd
lea eax, [esp + 8]
mov dword [esp + 0x11c], eax
lea ecx, [esp + 0x1c]
mov dword [esp + 0x118], ecx
xor edx, edx
xor ebx, ebx
mov ebp, dword [esp + 0xb8]
mov esi, dword [esp + 0x124]
jmp 0x51dbb6
mov edi, dword [esp + 0x6c]
inc edi
mov ebx, eax
mov ebp, ecx
mov esi, edx
mov edx, edi
mov dword [esp + 0xb8], ebp
mov dword [esp + 0x124], esi
mov dword [esp + 0x6c], edx
mov dword [esp + 0x64], ebx
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + 0x64]
mov edi, dword [esp + 0xd8]
mov dword [esp], edi
call ecx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x6c]
cmp ecx, eax
jge 0x51ddac
mov eax, dword [esp + 0x50]
mov edx, dword [eax + 0x2c]
mov dword [esp + 4], ecx
mov ebx, dword [esp + 0xd8]
mov dword [esp], ebx
call edx
lea edi, [esp + 0x3ac]
mov esi, dword [esp + 0x120]
call fcn.0044d1ae
mov eax, dword [esp + 0x6c]
test eax, eax
jne 0x51dc6f
mov ecx, dword [esp + 0x3c0]
mov edx, dword [esp + 0x3bc]
mov ebx, dword [0xbb4c00]
cmp ebx, edx
jne 0x51dc6f
mov dword [esp], edx
mov dword [esp + 4], ecx
mov eax, dword [0xbb4c04]
mov dword [esp + 8], eax
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
je 0x51dc6f
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0x124]
jmp 0x51dba9
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov ecx, dword [esp + 0x450]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x454]
mov dword [esp + 8], edx
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0xc], ebx
call fcn.00478e50
mov eax, dword [esp + 0x18]
mov dword [esp + 0xb0], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x114], ecx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x110], edx
mov ebx, dword [esp + 0x3c8]
mov ebp, dword [esp + 0x3c4]
mov dword [esp], ebp
mov dword [esp + 4], ebx
lea ebx, [0x7dc7fd]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 4
call fcn.00471c50
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.00520300
lea edi, [esp + 0x30c]
mov esi, dword [esp + 0x11c]
call fcn.0044d1f4
mov eax, dword [esp + 0x110]
mov dword [esp], eax
mov eax, dword [esp + 0x114]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x10c]
mov dword [esp + 0xc], eax
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x14], edx
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x18], ebx
mov edi, dword [esp + 0x118]
lea esi, [esp + 0x30c]
call fcn.0044d1f4
call fcn.0051ce90
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
test edx, edx
jne 0x51dd89
mov ebx, ecx
mov ecx, edx
mov edx, ebx
jmp 0x51dba9
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x480], eax
mov dword [esp + 0x484], edx
mov dword [esp + 0x488], ecx
add esp, 0x448
ret
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x480], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x484], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + 0x2c]
mov dword [esp + 4], 0
mov edx, dword [esp + 0xd8]
mov dword [esp], edx
call ecx
lea edi, [esp + 0x3e0]
mov esi, dword [esp + 0x120]
call fcn.0044d1ae
mov eax, dword [esp + 0x3f4]
mov ecx, dword [esp + 0x3f0]
mov edx, dword [0xbb4c00]
cmp edx, ecx
jne 0x51db7f
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [0xbb4c04]
mov dword [esp + 8], eax
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
je 0x51db7f
mov eax, dword [esp + 0x464]
mov ecx, dword [esp + 0xbc]
cmp eax, ecx
ja 0x51ffb9
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov ecx, dword [esp + 0x450]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x454]
mov dword [esp + 8], edx
mov dword [esp + 0xc], 0
call fcn.00478e50
mov eax, dword [esp + 0x18]
mov dword [esp + 0xb0], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x114], ecx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x110], edx
mov ebx, dword [esp + 0x460]
mov ebp, dword [esp + 0x464]
sub ebx, ebp
mov esi, ebx
neg ebx
sar ebx, 0x1f
and ebx, ebp
mov edi, dword [esp + 0x458]
add ebx, edi
mov dword [esp + 0x250], ebx
mov ebx, dword [esp + 0xbc]
sub ebx, ebp
mov dword [esp + 0x254], ebx
mov dword [esp + 0x258], esi
lea ebx, [0x773240]
mov dword [esp], ebx
lea ebx, [esp + 0x250]
mov dword [esp + 4], ebx
call fcn.004076b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
test eax, eax
je 0x51dfb6
movzx edx, byte [0xbb55c0]
test dl, dl
je 0x51df38
mov dword [0xbb55c4], eax
mov edx, dword [0xbc7270]
test edx, edx
jne 0x51dfa3
mov dword [0xbb55c8], ecx
mov dword [esp + 0x140], eax
mov dword [esp + 0x144], ecx
mov eax, dword [esp + 0x140]
test eax, eax
je 0x51df9b
movzx edx, byte [eax + 0xf]
mov ebx, edx
and edx, 0x1f
test bl, 0x20
jne 0x51df65
or edx, 0x80
mov ebx, dword [esp + 0x110]
mov dword [esp], ebx
mov ebx, dword [esp + 0x114]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0xb0]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call fcn.0047b0a0
jmp 0x51db7f
xor edx, edx
xor ecx, ecx
xor eax, eax
jmp 0x51df65
lea edi, [0xbb55c8]
mov edx, eax
mov eax, ecx
call fcn.0044cc20
mov eax, edx
jmp 0x51df38
xor edx, edx
xor ecx, ecx
xor eax, eax
jmp 0x51df65
mov eax, dword [ecx + 0x28]
mov edx, dword [esp + 0xd8]
mov dword [esp], edx
call eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov eax, dword [eax + 0x50]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 4]
cmp eax, 8
jne 0x51e171
mov eax, dword [esp + 0x50]
mov dword [esp], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 8], eax
mov dword [esp + 0xc], eax
call fcn.0047c8d0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x44c]
mov dword [esp], ebx
mov ebp, dword [esp + 0x450]
mov dword [esp + 4], ebp
mov esi, dword [esp + 0x454]
mov dword [esp + 8], esi
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
call fcn.0047b0a0
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x244], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x248], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x24c], eax
lea eax, [0x757500]
mov dword [esp], eax
lea eax, [esp + 0x244]
mov dword [esp + 4], eax
call fcn.004076b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
test ecx, ecx
je 0x51e166
movzx edx, byte [0xbb55c0]
test dl, dl
je 0x51e0bf
mov dword [0xbb55c4], ecx
mov edx, dword [0xbc7270]
test edx, edx
jne 0x51e156
mov dword [0xbb55c8], eax
mov dword [esp + 0x150], ecx
mov dword [esp + 0x154], eax
mov ecx, dword [esp + 0x150]
test ecx, ecx
je 0x51e14e
movzx edx, byte [ecx + 0xf]
mov ebx, edx
and edx, 0x1f
test bl, 0x20
jne 0x51e0ec
or edx, 0x80
mov ebx, dword [esp + 0x44c]
mov dword [esp], ebx
mov ebx, dword [esp + 0x450]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x454]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
call fcn.0047c5a0
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x480], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x484], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x488], eax
add esp, 0x448
ret
xor edx, edx
xor eax, eax
xor ecx, ecx
jmp 0x51e0ec
lea edi, [0xbb55c8]
call fcn.0044cc20
jmp 0x51e0bf
xor edx, edx
xor eax, eax
xor ecx, ecx
jmp 0x51e0ec
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + 0x28]
mov edx, dword [esp + 0xd8]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x10c]
mov dword [esp], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 4], edx
mov edx, dword [esp + 0xa4]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0xd8]
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
call fcn.0051c9d0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
test ecx, ecx
je 0x51e204
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov dword [esp + 0xf4], eax
mov dword [esp + 0x80], ecx
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], edx
call fcn.0047b0a0
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0x80]
jmp 0x51e1e1
mov dword [esp], ecx
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov edx, dword [0xbb4bdc]
mov dword [esp + 8], edx
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
jne 0x51e29b
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xb4]
mov ebp, dword [esp + 0xbc]
mov esi, dword [esp + 0x458]
jmp 0x51d410
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.0051af60
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
test edx, edx
je 0x51e2f0
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x480], eax
mov dword [esp + 0x484], edx
mov dword [esp + 0x488], ecx
add esp, 0x448
ret
movzx ebx, byte [0xbb55c0]
test bl, bl
je 0x51e3b8
lea ebx, [0x7d9900]
mov dword [0xbb55c4], ebx
mov ebp, dword [0xbc7270]
test ebp, ebp
jne 0x51e3a8
mov dword [0xbb55c8], eax
mov dword [esp + 0x100], ecx
mov dword [esp + 0x90], edx
mov dword [esp + 0x148], ebx
mov dword [esp + 0x14c], eax
mov ebx, dword [esp + 0x148]
test ebx, ebx
je 0x51e3a0
movzx ebp, byte [ebx + 0xf]
mov esi, ebp
and ebp, 0x1f
xchg esi, eax
test al, 0x20
xchg esi, eax
jne 0x51e35c
or ebp, 0x80
mov ecx, dword [esp + 0x44c]
mov dword [esp], ecx
mov ecx, dword [esp + 0x450]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x454]
mov dword [esp + 8], ecx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ebp
call fcn.0047b0a0
mov ecx, dword [esp + 0x100]
mov edx, dword [esp + 0x90]
jmp 0x51e2cd
xor ebp, ebp
xor eax, eax
xor ebx, ebx
jmp 0x51e35c
lea edi, [0xbb55c8]
call fcn.0044cc20
jmp 0x51e31f
lea ebx, [0x7d9900]
jmp 0x51e31f
mov dword [esp], ecx
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov edx, dword [0xbb4bf4]
mov dword [esp + 8], edx
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
jne 0x51e40b
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xb4]
mov ebp, dword [esp + 0xbc]
mov esi, dword [esp + 0x458]
jmp 0x51d402
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
mov byte [esp + 0xc], 1
call fcn.0047b180
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x480], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x484], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov dword [esp], ecx
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov edx, dword [0xbb4bec]
mov dword [esp + 8], edx
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
jne 0x51e4ae
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xb4]
mov ebp, dword [esp + 0xbc]
mov esi, dword [esp + 0x458]
jmp 0x51d3f4
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.0051ad90
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
test ecx, ecx
je 0x51e503
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov dword [esp + 0xec], eax
mov dword [esp + 0x78], ecx
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
sar edx, 0x1f
mov dword [esp + 0x10], edx
call fcn.0047b4f0
mov eax, dword [esp + 0xec]
mov ecx, dword [esp + 0x78]
jmp 0x51e4e0
mov dword [esp], ecx
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov edx, dword [0xbb4c14]
mov dword [esp + 8], edx
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
je 0x51e774
lea edi, [esp + 0x294]
xor eax, eax
call fcn.0044cd1b
mov ecx, dword [esp + 0x70]
cmp ecx, 0x17
jne 0x51e713
lea edi, [esp + 0x2f8]
call fcn.0044cd1b
mov ecx, dword [esp + 0x10c]
mov dword [esp], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + 8], ecx
call fcn.0051b950
lea edi, [esp + 0x2f8]
mov esi, dword [esp + 0x128]
call fcn.0044d1fe
mov ecx, dword [esp + 0x24]
mov dword [esp + 0xe0], ecx
mov edx, dword [esp + 0x20]
lea edi, [esp + 0x294]
lea esi, [esp + 0x2f8]
call fcn.0044d1fe
mov eax, dword [esp + 0xe0]
test edx, edx
je 0x51e61d
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x480], ecx
mov dword [esp + 0x484], edx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov dword [esp + 0x7c], edx
mov dword [esp + 0xe0], eax
lea edi, [esp + 0x2d0]
lea esi, [esp + 0x294]
call fcn.0044d1fe
lea eax, [0x7d70a0]
mov dword [esp], eax
lea eax, [esp + 0x2d0]
mov dword [esp + 4], eax
call fcn.00407470
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
test ecx, ecx
je 0x51e70b
movzx edx, byte [0xbb55c0]
test dl, dl
je 0x51e685
mov dword [0xbb55c4], ecx
mov edx, dword [0xbc7270]
test edx, edx
jne 0x51e6fb
mov dword [0xbb55c8], eax
mov dword [esp + 0x138], ecx
mov dword [esp + 0x13c], eax
mov ecx, dword [esp + 0x138]
test ecx, ecx
je 0x51e6f3
movzx edx, byte [ecx + 0xf]
mov ebx, edx
and edx, 0x1f
test bl, 0x20
jne 0x51e6b2
or edx, 0x80
mov ebx, dword [esp + 0x44c]
mov dword [esp], ebx
mov ebx, dword [esp + 0x450]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x454]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
call fcn.0047b0a0
mov eax, dword [esp + 0xe0]
mov edx, dword [esp + 0x7c]
jmp 0x51e5fa
xor edx, edx
xor eax, eax
xor ecx, ecx
jmp 0x51e6b2
lea edi, [0xbb55c8]
call fcn.0044cc20
jmp 0x51e685
xor edx, edx
xor eax, eax
xor ecx, ecx
jmp 0x51e6b2
lea edi, [esp + 0x2e4]
call fcn.0044cd1b
mov ecx, dword [esp + 0x10c]
mov dword [esp], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + 8], ecx
call fcn.0051bc80
lea edi, [esp + 0x2e4]
mov esi, dword [esp + 0x128]
call fcn.0044d1fe
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
lea edi, [esp + 0x294]
lea esi, [esp + 0x2e4]
call fcn.0044d1fe
jmp 0x51e5f6
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xb4]
mov ebp, dword [esp + 0xbc]
mov esi, dword [esp + 0x458]
jmp 0x51d3e6
mov dword [esp], ecx
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov edx, dword [0xbb4be4]
mov dword [esp + 8], edx
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
je 0x51ea35
mov eax, dword [esp + 0x48]
test eax, eax
je 0x51e9d9
mov edx, dword [esp + 0xb4]
mov ebx, dword [esp + 0x458]
movzx ecx, byte [ebx + edx]
movzx edx, cl
cmp edx, 7
jle 0x51e973
mov dword [esp + 0x1c0], 0
mov dword [esp + 0x1c4], 0
lea eax, [0x7ea761]
mov dword [esp + 0x1c0], eax
mov dword [esp + 0x1c4], 0x22
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x1c0]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
xor edx, edx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
test ecx, ecx
je 0x51e868
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov dword [esp + 0xe8], eax
mov dword [esp + 0x98], ecx
mov dword [esp + 0x274], ebp
mov dword [esp + 0x278], ebx
mov dword [esp + 0x27c], edx
mov dword [esp + 0x280], esi
lea eax, [0x7a9d80]
mov dword [esp], eax
lea eax, [esp + 0x274]
mov dword [esp + 4], eax
call fcn.00407470
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
test eax, eax
je 0x51e96b
movzx edx, byte [0xbb55c0]
test dl, dl
je 0x51e8dc
mov dword [0xbb55c4], eax
mov edx, dword [0xbc7270]
test edx, edx
jne 0x51e955
mov dword [0xbb55c8], ecx
mov dword [esp + 0x160], eax
mov dword [esp + 0x164], ecx
mov eax, dword [esp + 0x160]
test eax, eax
je 0x51e94d
movzx edx, byte [eax + 0xf]
mov ebx, edx
and edx, 0x1f
test bl, 0x20
jne 0x51e909
or edx, 0x80
mov ebx, dword [esp + 0x44c]
mov dword [esp], ebx
mov ebx, dword [esp + 0x450]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x454]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
call fcn.0047b0a0
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0x98]
jmp 0x51e845
xor eax, eax
xor edx, edx
xor ecx, ecx
jmp 0x51e909
lea edi, [0xbb55c8]
mov edx, eax
mov eax, ecx
call fcn.0044cc20
mov eax, edx
jmp 0x51e8dc
xor eax, eax
xor edx, edx
xor ecx, ecx
jmp 0x51e909
cmp eax, 1
jne 0x51e980
test edx, edx
jg 0x51e7ea
mov ebx, dword [esp + 0x10c]
movzx ebp, byte [eax + ebx - 1]
mov esi, 1
shl esi, cl
cmp cl, 0x20
sbb edi, edi
and esi, edi
dec esi
xchg ebp, eax
xchg esi, ebx
test bl, al
xchg esi, ebx
xchg ebp, eax
jne 0x51e7ea
lea esi, [eax - 1]
mov edi, esi
shl esi, 3
sub esi, edx
mov eax, edi
mov edi, dword [esp + 0xa4]
lea edx, [edi - 1]
mov edi, edx
neg edx
sar edx, 0x1f
and edx, 1
lea ebp, [ebx + edx]
mov edx, edi
mov ebx, eax
xor eax, eax
xor ecx, ecx
jmp 0x51e841
mov dword [esp + 0x1c8], 0
mov dword [esp + 0x1cc], 0
lea eax, [0x7e3e1b]
mov dword [esp + 0x1c8], eax
mov dword [esp + 0x1cc], 0x16
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x1c8]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
xor edx, edx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
jmp 0x51e841
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xb4]
mov ebp, dword [esp + 0xbc]
mov esi, dword [esp + 0x458]
jmp 0x51d3d8
mov dword [esp], ecx
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov edx, dword [0xbb4bfc]
mov dword [esp + 8], edx
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
jne 0x51ea9f
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xb4]
mov ebp, dword [esp + 0xbc]
mov esi, dword [esp + 0x458]
jmp 0x51d3ca
mov eax, dword [esp + 0x10c]
mov dword [esp], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 8], eax
call fcn.0051b500
mov eax, dword [esp + 0x10]
mov dword [esp + 0x5c], eax
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xdc], ecx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0xf8], edx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x84], ebx
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x60], ebp
mov esi, dword [esp + 0x44c]
mov dword [esp], esi
mov edi, dword [esp + 0x450]
mov dword [esp + 4], edi
mov ebp, dword [esp + 0x454]
mov dword [esp + 8], ebp
call fcn.0047c110
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov dword [esp], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], eax
call fcn.0047c8d0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x44c]
mov dword [esp], ebx
mov ebp, dword [esp + 0x450]
mov dword [esp + 4], ebp
mov esi, dword [esp + 0x454]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], ecx
call fcn.0047b0a0
mov eax, dword [esp + 0x84]
test eax, eax
je 0x51eba9
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x480], ecx
mov dword [esp + 0x484], eax
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x25c], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x260], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x264], eax
lea eax, [0x78de60]
mov dword [esp], eax
lea eax, [esp + 0x25c]
mov dword [esp + 4], eax
call fcn.004076b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
test ecx, ecx
je 0x51ec96
movzx edx, byte [0xbb55c0]
test dl, dl
je 0x51ec17
mov dword [0xbb55c4], ecx
mov edx, dword [0xbc7270]
test edx, edx
jne 0x51ec89
mov dword [0xbb55c8], eax
mov dword [esp + 0x168], ecx
mov dword [esp + 0x16c], eax
mov ecx, dword [esp + 0x168]
test ecx, ecx
je 0x51ec81
movzx edx, byte [ecx + 0xf]
mov ebx, edx
and edx, 0x1f
test bl, 0x20
jne 0x51ec44
or edx, 0x80
mov ebx, dword [esp + 0x44c]
mov dword [esp], ebx
mov ebx, dword [esp + 0x450]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x454]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
call fcn.0047c5a0
mov eax, dword [esp + 0x84]
jmp 0x51eb7f
xor edx, edx
xor eax, eax
xor ecx, ecx
jmp 0x51ec44
lea edi, [0xbb55c8]
call fcn.0044cc20
jmp 0x51ec17
xor eax, eax
xor ecx, ecx
xor edx, edx
jmp 0x51ec44
mov dword [esp], ecx
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov edx, dword [0xbb4c0c]
mov dword [esp + 8], edx
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
je 0x51ee85
mov eax, dword [esp + 0x464]
mov ecx, dword [esp + 0xbc]
cmp eax, ecx
ja 0x51ffc0
lea edi, [esp + 0x33c]
lea esi, [0x8fba40]
call fcn.0044d1d6
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x33c], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x340], ecx
movzx ecx, byte [esp + 0x42]
mov byte [esp + 0x344], cl
mov ecx, dword [esp + 0x10c]
mov dword [esp + 0x348], ecx
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x34c], ecx
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x350], ecx
mov ecx, dword [esp + 0x460]
sub ecx, eax
mov edx, ecx
neg ecx
sar ecx, 0x1f
and ecx, eax
mov ebx, dword [esp + 0x458]
add ecx, ebx
mov dword [esp + 0x354], ecx
mov ecx, dword [esp + 0xbc]
sub ecx, eax
mov dword [esp + 0x358], ecx
mov dword [esp + 0x35c], edx
lea edi, [esp + 0x360]
lea esi, [esp + 0x33c]
call fcn.0044d1d6
lea eax, [0x7aad00]
mov dword [esp], eax
lea eax, [esp + 0x360]
mov dword [esp + 4], eax
call fcn.00407470
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
test ecx, ecx
je 0x51ee7a
movzx edx, byte [0xbb55c0]
test dl, dl
je 0x51edd3
mov dword [0xbb55c4], ecx
mov edx, dword [0xbc7270]
test edx, edx
jne 0x51ee6a
mov dword [0xbb55c8], eax
mov dword [esp + 0x130], ecx
mov dword [esp + 0x134], eax
mov ecx, dword [esp + 0x130]
test ecx, ecx
je 0x51ee62
movzx edx, byte [ecx + 0xf]
mov ebx, edx
and edx, 0x1f
test bl, 0x20
jne 0x51ee00
or edx, 0x80
mov ebx, dword [esp + 0x44c]
mov dword [esp], ebx
mov ebx, dword [esp + 0x450]
mov dword [esp + 4], ebx
mov ebx, dword [esp + 0x454]
mov dword [esp + 8], ebx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
call fcn.0047b0a0
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x480], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x484], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x488], eax
add esp, 0x448
ret
xor edx, edx
xor eax, eax
xor ecx, ecx
jmp 0x51ee00
lea edi, [0xbb55c8]
call fcn.0044cc20
jmp 0x51edd3
xor edx, edx
xor eax, eax
xor ecx, ecx
jmp 0x51ee00
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xb4]
mov ebp, dword [esp + 0xbc]
mov esi, dword [esp + 0x458]
jmp 0x51d3bc
mov dword [esp + 0x1d0], 0
mov dword [esp + 0x1d4], 0
lea eax, [0x7dfa2a]
mov dword [esp + 0x1d0], eax
mov dword [esp + 0x1d4], 0xe
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x1d0]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], eax
mov dword [esp + 0x488], ecx
add esp, 0x448
ret
mov edi, dword [esp + 0x45c]
cmp ebp, edi
xchg esi, ebx
setg bl
xchg esi, ebx
jmp 0x51d34e
movzx eax, byte [esp + 0x42]
xchg esi, ebx
cmp al, bl
xchg esi, ebx
je 0x51d336
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
mov edi, dword [esp + 0x12c]
lea esi, [esp + 0x468]
call fcn.0044d1f4
call fcn.0051ffe0
movzx eax, byte [esp + 0x24]
test al, al
je 0x51efae
mov eax, dword [esp + 0x464]
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0x124]
mov dword [esp + 0x480], eax
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], edx
add esp, 0x448
ret
mov eax, dword [esp + 0x4c]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xd0], eax
movzx eax, byte [esp + 0x42]
mov byte [esp + 0xd4], al
lea edi, [esp + 0x324]
lea esi, [esp + 0x468]
call fcn.0044d1f4
mov eax, dword [esp + 0x50]
mov eax, dword [eax + 0x60]
mov ecx, dword [esp + 0xd8]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov dword [esp + 0x1e0], ecx
mov dword [esp + 0x1e4], eax
lea edi, [esp + 0x384]
xor eax, eax
call fcn.0044cd16
lea eax, [0x771460]
mov dword [esp], eax
mov ecx, dword [esp + 0xbc]
mov dword [esp + 4], ecx
call fcn.00407550
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x384], eax
mov dword [esp + 0x388], ecx
lea eax, [0x7a5140]
mov dword [esp], eax
lea eax, [esp + 0xc8]
mov dword [esp + 4], eax
call fcn.00407740
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dword [esp + 0x38c], ecx
mov dword [esp + 0x390], eax
lea eax, [0x7bbf00]
mov dword [esp], eax
lea eax, [esp + 0x324]
mov dword [esp + 4], eax
call fcn.00407470
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dword [esp + 0x394], ecx
mov dword [esp + 0x398], eax
lea eax, [0x771de0]
mov dword [esp], eax
lea eax, [esp + 0x1e0]
mov dword [esp + 4], eax
call fcn.00407630
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dword [esp + 0x39c], ecx
mov dword [esp + 0x3a0], eax
lea eax, [0x771460]
mov dword [esp], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 4], eax
call fcn.00407550
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dword [esp + 0x3a4], ecx
mov dword [esp + 0x3a8], eax
lea eax, [0x7eccbb]
mov dword [esp], eax
mov dword [esp + 4], 0x27
lea eax, [esp + 0x384]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 5
mov dword [esp + 0x10], 5
call fcn.004bca60
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1d8], 0
mov dword [esp + 0x1dc], 0
mov dword [esp + 0x1d8], eax
mov dword [esp + 0x1dc], ecx
lea eax, [0x8f93d0]
mov dword [esp], eax
lea eax, [esp + 0x1d8]
mov dword [esp + 4], eax
call fcn.004077b0
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x54]
jmp 0x51ef92
cmp ebp, ebx
jne 0x51ef3c
cmp edx, ecx
jne 0x51ef3c
jmp 0x51d32c
movzx ecx, byte [esp + 0x46b]
test cl, cl
je 0x51f1db
mov ecx, dword [esp + 0x470]
test ecx, ecx
je 0x51f1d2
mov edx, dword [ecx]
mov ecx, dword [esp + 0x44]
xor eax, eax
mov ebp, 3
jmp 0x51d31d
mov ecx, dword [esp + 0x44]
jmp 0x51d31d
mov ecx, dword [esp + 0x44]
jmp 0x51d31d
movzx ecx, byte [esp + 0x46a]
test cl, cl
je 0x51f225
mov ecx, dword [esp + 0x470]
test ecx, ecx
je 0x51f214
mov edx, dword [ecx]
xchg ebp, eax
test al, al
xchg ebp, eax
mov ecx, dword [esp + 0x44]
mov eax, 0
mov ebp, 1
jmp 0x51d317
xchg ebp, eax
test al, al
xchg ebp, eax
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x74]
jmp 0x51d317
xchg ebp, eax
test al, al
xchg ebp, eax
mov ecx, dword [esp + 0x44]
mov ebp, dword [esp + 0x74]
jmp 0x51d317
mov edi, ecx
mov ecx, dword [esp + 0x470]
test ecx, ecx
je 0x51f269
mov ecx, dword [ecx]
xchg ebp, eax
test al, al
xchg ebp, eax
mov edi, eax
mov eax, 0
mov eax, 2
mov dword [esp + 0x74], eax
mov edx, ecx
mov ecx, dword [esp + 0x44]
mov eax, 0
jmp 0x51d30d
xchg ebp, eax
test al, al
xchg ebp, eax
mov ecx, edi
mov edi, eax
mov eax, 0
mov dword [esp + 0x74], eax
mov eax, edi
jmp 0x51d30d
mov edx, ebp
jmp 0x51d2ea
cmp ebp, 0x12
je 0x51d2be
mov ebp, ecx
mov ecx, dword [esp + 0x44]
jmp 0x51d2c0
cmp ebp, 0x14
je 0x51d2be
cmp ebp, 0x16
je 0x51d2be
cmp ebp, 0x1b
je 0x51d2be
jmp 0x51f291
mov ebp, dword [esp + 0x474]
test ebp, ebp
je 0x51f2cd
mov ecx, dword [esp + 0x44]
jmp 0x51d2c0
mov ebp, ecx
jmp 0x51f2c4
mov ebx, dword [esp + 0x4c]
mov ebp, ecx
mov ecx, dword [esp + 0x44]
jmp 0x51d2c0
mov eax, dword [esp + 0x50]
test eax, eax
je 0x51f2eb
mov eax, dword [eax + 4]
mov dword [esp + 0x1f0], 0
mov dword [esp + 0x1f4], 0
mov dword [esp + 0x1f0], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0x1f4], eax
lea eax, [0x7e2289]
mov dword [esp], eax
mov dword [esp + 4], 0x13
lea eax, [esp + 0x1f0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 1
mov dword [esp + 0x10], 1
call fcn.004bca60
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x1e8], 0
mov dword [esp + 0x1ec], 0
mov dword [esp + 0x1e8], eax
mov dword [esp + 0x1ec], ecx
lea eax, [0x8f93d0]
mov dword [esp], eax
lea eax, [esp + 0x1e8]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], eax
mov dword [esp + 0x488], ecx
add esp, 0x448
ret
mov dword [esp + 0x480], eax
mov dword [esp + 0x484], esi
mov dword [esp + 0x488], edi
add esp, 0x448
ret
xchg ebp, eax
mov byte [esp + 0x43], al
xchg ebp, eax
mov dword [esp + 0xac], esi
mov dword [esp + 0xa8], edi
mov dword [esp], ebx
mov eax, dword [esp + 0xd8]
mov dword [esp + 4], eax
mov ecx, dword [0xbb4c0c]
mov dword [esp + 8], ecx
call fcn.00402e90
movzx eax, byte [esp + 0xc]
test al, al
je 0x51f43e
movzx ecx, byte [esp + 0x43]
mov edx, dword [esp + 0xac]
mov ebx, dword [esp + 0xa8]
mov ebp, dword [esp + 0xb4]
mov eax, dword [esp + 0xbc]
mov esi, dword [esp + 0xb8]
mov edi, dword [esp + 0x124]
jmp 0x51d23f
mov eax, dword [esp + 0xac]
test eax, eax
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0x45c]
mov ebx, dword [esp + 0x50]
jmp 0x51d0f1
xchg ebp, eax
test al, al
xchg ebp, eax
jne 0x51d0d6
mov eax, dword [esp + 0x44c]
mov dword [esp], eax
mov eax, dword [esp + 0x450]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x454]
mov dword [esp + 8], eax
mov edi, dword [esp + 0x12c]
lea esi, [esp + 0x468]
call fcn.0044d1f4
call fcn.0051ffe0
movzx eax, byte [esp + 0x24]
test al, al
je 0x51f4da
mov eax, dword [esp + 0x464]
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0x124]
mov dword [esp + 0x480], eax
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], edx
add esp, 0x448
ret
mov dword [esp + 0x1f8], 0
mov dword [esp + 0x1fc], 0
lea eax, [0x7ebd4a]
mov dword [esp + 0x1f8], eax
mov dword [esp + 0x1fc], 0x25
lea eax, [0x8f93d0]
mov dword [esp], eax
lea eax, [esp + 0x1f8]
mov dword [esp + 4], eax
call fcn.004077b0
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0xbc]
jmp 0x51f4be
mov dword [esp + 0x208], 0
mov dword [esp + 0x20c], 0
lea eax, [0x7e5464]
mov dword [esp + 0x208], eax
mov dword [esp + 0x20c], 0x19
lea eax, [0x8f93d0]
mov dword [esp], eax
lea eax, [esp + 0x208]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0xbc]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], eax
mov dword [esp + 0x488], ecx
add esp, 0x448
ret
mov eax, 2
jmp 0x51d091
mov eax, dword [esp + 0xbc]
mov eax, ebx
mov ebx, edi
mov edi, ecx
mov ecx, ebp
mov ebp, eax
mov eax, dword [esp + 0xbc]
mov eax, edx
mov edx, esi
mov esi, eax
mov eax, dword [esp + 0xbc]
jmp 0x51d23f
mov dword [esp + 0x480], eax
mov dword [esp + 0x484], edx
mov dword [esp + 0x488], ecx
add esp, 0x448
ret
mov eax, dword [esp + 0x50]
mov ecx, dword [eax + 0x6c]
mov edx, dword [esp + 0xd8]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 4]
test eax, eax
jne 0x51d010
mov eax, dword [esp + 0x458]
mov dword [esp], eax
mov ecx, dword [esp + 0x45c]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x460]
mov dword [esp + 8], edx
mov ebx, dword [esp + 0x464]
mov dword [esp + 0xc], ebx
call fcn.0051c300
mov eax, dword [esp + 0x20]
movzx ecx, byte [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x28]
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x10]
test esi, esi
jne 0x51ff9d
mov dword [esp + 0xa0], edx
mov dword [esp + 0xbc], ebp
add edx, eax
cmp edx, eax
jge 0x51ff7b
mov dword [esp + 0xc0], eax
mov eax, 1
mov byte [esp + 0x41], al
mov eax, dword [esp + 0xc0]
movzx ebp, byte [esp + 0x41]
xchg ebp, eax
test al, al
xchg ebp, eax
jne 0x51ff08
mov dword [esp + 0xb4], edx
test cl, cl
je 0x51f7c9
xor eax, eax
xor ecx, ecx
test esi, esi
jne 0x51f7ad
mov dword [esp + 0xb8], esi
mov dword [esp + 0x124], ebx
test eax, eax
je 0x51f75e
movzx ebp, byte [0xbb55c0]
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x51f6fe
mov dword [0xbb55c4], eax
mov ebp, dword [0xbc7270]
test ebp, ebp
jne 0x51f797
mov dword [0xbb55c8], ecx
mov dword [esp + 0x158], eax
mov dword [esp + 0x15c], ecx
mov eax, dword [esp + 0x158]
test eax, eax
je 0x51f78f
movzx ebp, byte [eax + 0xf]
mov edi, ebp
and ebp, 0x1f
xchg edi, eax
test al, 0x20
xchg edi, eax
jne 0x51f72d
or ebp, 0x80
mov edx, dword [esp + 0x44c]
mov dword [esp], edx
mov edx, dword [esp + 0x450]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x454]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ebp
call fcn.0047b0a0
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x480], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x484], eax
mov eax, dword [esp + 0x124]
mov dword [esp + 0x488], eax
add esp, 0x448
ret
xor ebp, ebp
xor ecx, ecx
xor eax, eax
jmp 0x51f72d
lea edi, [0xbb55c8]
mov ebp, eax
mov eax, ecx
call fcn.0044cc20
mov eax, ebp
jmp 0x51f6fe
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], esi
mov dword [esp + 0x488], ebx
add esp, 0x448
ret
test edi, edi
jne 0x51feff
test edx, edx
jl 0x51ffce
cmp eax, edx
ja 0x51ffce
mov ebp, dword [esp + 0x460]
cmp edx, ebp
ja 0x51ffce
sub ebp, eax
mov ecx, ebp
xchg ebp, ebx
neg ebx
xchg ebp, ebx
sar ebp, 0x1f
and ebp, eax
mov eax, edx
mov edx, dword [esp + 0x458]
mov edi, ebx
lea ebx, [edx + ebp]
mov dword [esp + 0x108], ebx
mov ebx, dword [esp + 0xbc]
cmp ebx, 0xc
jg 0x51fbee
cmp ebx, 3
jg 0x51fa67
cmp ebx, 2
je 0x51f9fa
cmp ebx, 3
jne 0x51f9ed
mov ebx, dword [esp + 0xa0]
test ebx, ebx
je 0x51f991
movzx edx, byte [edx + ebp]
movzx ebp, dl
cmp ebp, 7
jle 0x51f924
mov dword [esp + 0x210], 0
mov dword [esp + 0x214], 0
lea eax, [0x7ea761]
mov dword [esp + 0x210], eax
mov dword [esp + 0x214], 0x22
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x210]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
xor edx, edx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
mov dword [esp + 0x104], ecx
mov dword [esp + 0x9c], eax
mov dword [esp + 0x284], ebp
mov dword [esp + 0x288], ebx
mov dword [esp + 0x28c], edx
mov dword [esp + 0x290], esi
lea edx, [0x7a9d80]
mov dword [esp], edx
lea edx, [esp + 0x284]
mov dword [esp + 4], edx
call fcn.00407470
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x104]
mov ebx, dword [esp + 0x9c]
mov esi, ebx
mov ebx, edx
mov edx, dword [esp + 0xb4]
mov ebp, eax
mov eax, ecx
mov ecx, ebp
jmp 0x51f6b9
cmp ebx, 1
jne 0x51f931
test ebp, ebp
jg 0x51f85e
mov dword [esp + 0xbc], ecx
mov esi, dword [esp + 0x108]
movzx edi, byte [ebx + esi - 1]
mov ecx, edx
mov eax, 1
shl eax, cl
cmp cl, 0x20
sbb edx, edx
and eax, edx
dec eax
xchg edi, ebx
test al, bl
xchg edi, ebx
jne 0x51f85e
dec ebx
mov edi, ebx
shl ebx, 3
sub ebx, ebp
mov eax, edi
mov edi, dword [esp + 0xbc]
lea edx, [edi - 1]
mov edi, edx
neg edx
sar edx, 0x1f
and edx, 1
lea ebp, [esi + edx]
mov edx, edi
xor ecx, ecx
mov esi, ebx
mov ebx, eax
xor eax, eax
jmp 0x51f8b5
mov dword [esp + 0x218], 0
mov dword [esp + 0x21c], 0
lea eax, [0x7e3e1b]
mov dword [esp + 0x218], eax
mov dword [esp + 0x21c], 0x16
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x218]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
xor edx, edx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
jmp 0x51f8b5
mov edx, edi
mov ebx, esi
xor ecx, ecx
xor eax, eax
jmp 0x51f90e
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0051ab00
mov eax, dword [esp + 0x18]
mov dword [esp + 0x124], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xb8], ecx
mov edx, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
lea ebp, [0x771520]
mov dword [esp], ebp
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
call fcn.004075b0
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x124]
mov ebx, dword [esp + 0xb8]
jmp 0x51f90e
cmp ebx, 4
je 0x51fb89
cmp ebx, 6
je 0x51fb00
cmp ebx, 0xc
jne 0x51f9ed
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0051c210
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x170], eax
mov dword [esp + 0x174], ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x124], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xb8], ecx
lea edx, [0x771de0]
mov dword [esp], edx
lea edx, [esp + 0x170]
mov dword [esp + 4], edx
call fcn.00407630
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x124]
mov ebx, dword [esp + 0xb8]
jmp 0x51f90e
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0051b500
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov dword [esp + 0x238], eax
mov dword [esp + 0x23c], ecx
mov dword [esp + 0x240], edx
mov eax, dword [esp + 0x18]
mov dword [esp + 0xb8], eax
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x124], ecx
lea edx, [0x78de60]
mov dword [esp], edx
lea edx, [esp + 0x238]
mov dword [esp + 4], edx
call fcn.004076b0
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x124]
mov ebx, dword [esp + 0xb8]
jmp 0x51f90e
mov dword [esp + 0x124], edi
mov dword [esp + 0xb8], esi
mov eax, dword [esp + 0x108]
mov dword [esp + 0x268], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x26c], eax
mov dword [esp + 0x270], ecx
lea eax, [0x757500]
mov dword [esp], eax
lea eax, [esp + 0x268]
mov dword [esp + 4], eax
call fcn.004076b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x124]
mov ebx, dword [esp + 0xb8]
jmp 0x51f90e
cmp ebx, 0x14
jg 0x51fd70
cmp ebx, 0x12
je 0x51fcf2
cmp ebx, 0x13
je 0x51fc74
cmp ebx, 0x14
jne 0x51f9ed
mov dword [esp], 0
mov eax, dword [esp + 0x108]
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
call fcn.0043c0a0
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x220], ecx
mov dword [esp + 0x224], eax
lea eax, [0x771de0]
mov dword [esp], eax
lea eax, [esp + 0x220]
mov dword [esp + 4], eax
call fcn.00407630
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
xor edx, edx
xor ebx, ebx
jmp 0x51f90e
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0051bfa0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x188], eax
mov dword [esp + 0x18c], ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x124], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xb8], ecx
lea edx, [0x771de0]
mov dword [esp], edx
lea edx, [esp + 0x188]
mov dword [esp + 4], edx
call fcn.00407630
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x124]
mov ebx, dword [esp + 0xb8]
jmp 0x51f90e
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0051beb0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x180], eax
mov dword [esp + 0x184], ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x124], eax
mov ecx, dword [esp + 0x14]
mov dword [esp + 0xb8], ecx
lea edx, [0x771de0]
mov dword [esp], edx
lea edx, [esp + 0x180]
mov dword [esp + 4], edx
call fcn.00407630
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x124]
mov ebx, dword [esp + 0xb8]
jmp 0x51f90e
cmp ebx, 0x16
je 0x51fe81
cmp ebx, 0x17
je 0x51fe06
cmp ebx, 0x18
jne 0x51f9ed
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0051bc80
lea edi, [esp + 0x2a8]
mov esi, dword [esp + 0x128]
call fcn.0044d1fe
mov eax, dword [esp + 0x24]
mov dword [esp + 0x124], eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0xb8], ecx
lea edx, [0x7d70a0]
mov dword [esp], edx
lea edx, [esp + 0x2a8]
mov dword [esp + 4], edx
call fcn.00407470
mov ecx, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x124]
mov ebx, dword [esp + 0xb8]
jmp 0x51f90e
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0051b950
lea edi, [esp + 0x2bc]
mov esi, dword [esp + 0x128]
call fcn.0044d1fe
mov eax, dword [esp + 0x20]
mov dword [esp + 0xb8], eax
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x124], ecx
lea edx, [0x7d70a0]
mov dword [esp], edx
lea edx, [esp + 0x2bc]
mov dword [esp + 4], edx
call fcn.00407470
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x124]
mov ebx, dword [esp + 0xb8]
jmp 0x51f90e
mov eax, dword [esp + 0x108]
mov dword [esp], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 4], eax
mov dword [esp + 8], ecx
call fcn.0051c130
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x178], ecx
mov dword [esp + 0x17c], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0xb8], eax
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x124], ecx
lea edx, [0x771de0]
mov dword [esp], edx
lea edx, [esp + 0x178]
mov dword [esp + 4], edx
call fcn.00407630
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x124]
mov ebx, dword [esp + 0xb8]
jmp 0x51f90e
xor eax, eax
xor ecx, ecx
jmp 0x51f6b9
mov dword [esp + 0x58], eax
mov dword [esp + 0x228], 0
mov dword [esp + 0x22c], 0
lea eax, [0x7dfa2a]
mov dword [esp + 0x228], eax
mov dword [esp + 0x22c], 0xe
lea eax, [0x8f93f0]
mov dword [esp], eax
lea eax, [esp + 0x228]
mov dword [esp + 4], eax
call fcn.004077b0
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x480], edx
mov dword [esp + 0x484], ecx
mov dword [esp + 0x488], eax
add esp, 0x448
ret
mov ebp, dword [esp + 0x45c]
cmp edx, ebp
xchg ebp, ebx
setg bl
xchg ebp, ebx
xchg ebp, eax
mov byte [esp + 0x41], al
xchg ebp, eax
mov ebp, dword [esp + 0xbc]
jmp 0x51f697
mov dword [esp + 0x480], eax
mov dword [esp + 0x484], esi
mov dword [esp + 0x488], ebx
add esp, 0x448
ret
call fcn.00426730
ud2
call fcn.00426730
ud2
call fcn.00426730
ud2
call fcn.00426730
ud2
call fcn.0044b4c0
jmp fcn.0051ce90