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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xd54
mov eax, dword [ebp + 0x44]
push ebx
push esi
mov esi, dword [ebp + 0x14]
mov ebx, ecx
push edi
push esi
mov dword [esp + 0x34], ebx
mov dword [eax], 0
call fcn.00852000
mov edi, dword [ebp + 0xc]
add esp, 4
mov dword [esp + 0x1c], eax
test eax, eax
je 0x83e50c
lea esp, [esp]
mov eax, dword [esi]
mov ecx, esi
mov edi, dword [ebx + 0x138]
call dword [eax + 0xc]
mov edx, dword [edi]
mov ecx, edi
mov esi, eax
call dword [edx + 0xc]
cmp esi, eax
jne 0x83e330
mov ecx, dword [ebx + 0x138]
mov eax, dword [ecx]
call dword [eax + 0x14]
test eax, eax
je 0x83e330
mov eax, 1
jmp 0x83e332
xor eax, eax
test al, al
jne 0x83e9e8
cmp dword [esp + 0x1c], 3
je 0x83e919
lea ecx, [esp + 0x540]
call fcn.0086bc00
mov ecx, dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push eax
lea edx, [esp + 0x134]
push edx
mov eax, dword [ecx]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0086bcf0
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0x540]
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.00832700
push eax
lea eax, [esp + 0x44]
push eax
call fcn.00851980
add esp, 0xc
lea ecx, [esp + 0x130]
call fcn.0086bc10
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x544]
call fcn.0086bcf0
lea eax, [esp + 0x34]
mov ecx, ebx
push eax
call fcn.0083cab0
test eax, eax
jne 0x83e8f2
mov esi, dword [ebx + 0x128]
lea ecx, [esp + 0x540]
push eax
push dword [ebp + 0x28]
mov dword [esp + 0x14], eax
push dword [ebp + 0x1c]
mov edi, dword [esi]
push eax
push 0x40
call fcn.0086b810
push eax
push 0
lea ecx, [esp + 0xa0]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push dword [ebp + 0xc]
lea eax, [esp + 0x20]
mov ecx, esi
push eax
call dword [edi + 0x80]
mov ecx, dword [esp + 0xc]
mov esi, eax
test ecx, ecx
je 0x83e42e
cmp ecx, 0xffffffff
je 0x83e42e
push ecx
call fcn.008a3c40
mov ecx, dword [esp + 0xc]
xor edx, edx
test eax, eax
cmovne ecx, edx
mov dword [esp + 0xc], ecx
test esi, esi
je 0x83e7fb
cmp esi, 0xc0000034
je 0x83e48d
cmp esi, 0xc000003a
je 0x83e48d
test ecx, ecx
je 0x83e464
cmp ecx, 0xffffffff
je 0x83e464
push ecx
call fcn.008a3c40
mov ecx, dword [esp + 0xc]
xor edx, edx
test eax, eax
cmovne ecx, edx
mov dword [esp + 0xc], ecx
lea ecx, [esp + 0x540]
call fcn.0086bc10
mov esi, dword [ebp + 0x14]
push esi
call fcn.00852000
add esp, 4
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x83e300
mov edi, dword [ebp + 0xc]
jmp 0x83e50c
mov ecx, dword [ebx + 0x128]
lea edx, [esp + 0x10]
mov edi, dword [ebp + 0xc]
push 0
push dword [ebp + 0x28]
mov dword [esp + 0x18], 0
push dword [ebp + 0x1c]
mov eax, dword [ecx]
push dword [ebp + 0x10]
push edi
push edx
call dword [eax + 0x80]
mov ecx, dword [esp + 0x10]
mov esi, eax
test ecx, ecx
je 0x83e4cc
cmp ecx, 0xffffffff
je 0x83e4cc
push ecx
call fcn.008a3c40
cmp dword [esp + 0x1c], 1
jne 0x83e566
test esi, esi
jne 0x83e549
mov eax, dword [esp + 0xc]
test eax, eax
je 0x83e4fd
cmp eax, 0xffffffff
je 0x83e4fd
push eax
call fcn.008a3c40
mov ecx, dword [esp + 0xc]
xor edx, edx
test eax, eax
cmovne ecx, edx
mov dword [esp + 0xc], ecx
lea ecx, [esp + 0x540]
call fcn.0086bc10
mov esi, dword [ebp + 0x14]
cmp dword [ebx + 0x130], 1
jne 0x840346
push edi
mov edi, dword [ebp + 0x30]
push edi
call fcn.00851920
add esp, 8
test eax, eax
jne 0x83f0cc
mov eax, dword [ebp + 0x40]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0xc000000d
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x40
cmp esi, 0xc0000034
je 0x83e7b9
cmp esi, 0xc000003a
je 0x83e7b9
jmp 0x83e8ad
test esi, esi
jne 0x83e7a5
push edi
call fcn.008527a0
add esp, 4
test eax, eax
je 0x83e797
mov ecx, dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push eax
lea edx, [esp + 0x74c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0086bcf0
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0x48]
push eax
call fcn.00832700
push eax
lea eax, [esp + 0x40]
mov ecx, ebx
push eax
call fcn.0083a3e0
lea ecx, [esp + 0x748]
call fcn.0086bc10
push dword [ebp + 0x38]
mov eax, dword [ebp + 0x30]
lea ecx, [esp + 0x544]
push dword [ebp + 0x34]
or eax, 0x20
mov dword [esp + 0x18], esi
mov esi, dword [ebx + 0x128]
push eax
push 5
push dword [ebp + 0x28]
mov edi, dword [esi]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push 0
push 0x40
call fcn.0086b810
push eax
push 0
lea ecx, [esp + 0xb4]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push 0x100082
push dword [ebp + 8]
mov ecx, esi
call dword [edi + 0x84]
test eax, eax
je 0x83e63f
mov ecx, dword [ebp + 0x40]
mov dword [ecx], 0
mov ecx, dword [ebp + 0x3c]
mov dword [ecx], eax
lea ecx, [esp + 0x10]
call fcn.007f4e60
jmp 0x83e8bb
mov eax, dword [ebp + 0x2c]
cmp eax, 1
je 0x83e64c
cmp eax, 3
jne 0x83e6b1
mov esi, dword [ebx + 0x128]
lea eax, [esp + 0xc8]
push eax
push 0
push 0x40
mov edi, dword [esi]
lea ecx, [esp + 0x54]
push 0x100d53bc
call fcn.0086b870
mov ecx, eax
call fcn.0086b810
push eax
push 0
lea ecx, [esp + 0x98]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
mov ecx, esi
call dword [edi + 0xc0]
test eax, eax
jne 0x83e6b1
test dword [esp + 0xe8], 0x10
jne 0x83e6b1
push eax
push dword [ebp + 0x10]
call fcn.00851aa0
add esp, 8
lea ecx, [esp + 0x10]
call fcn.007f4e60
push dword [ebp + 0x30]
mov esi, dword [ebx + 0x128]
lea ecx, [esp + 0x544]
push dword [ebp + 0x28]
push dword [ebp + 0x1c]
mov edi, dword [esi]
push 0
push 0x40
call fcn.0086b810
push eax
push 0
lea ecx, [esp + 0xa0]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [edi + 0x80]
test eax, eax
je 0x83e720
mov ecx, dword [ebp + 0x40]
mov dword [ecx], 0
mov ecx, dword [ebp + 0x3c]
mov dword [ecx], eax
lea ecx, [esp + 0x10]
call fcn.007f4e60
jmp 0x83e8bb
lea ecx, [esp + 0x130]
call fcn.0086bc00
lea eax, [esp + 0x130]
mov ecx, ebx
push eax
push dword [ebp + 0x10]
call fcn.0083c5d0
test eax, eax
je 0x83e76b
lea eax, [esp + 0x130]
push eax
push dword [ebp + 8]
lea eax, [esp + 0x3c]
push eax
lea ecx, [ebx + 0xfc]
call fcn.007edd20
mov eax, dword [esp + 0x34]
test eax, eax
je 0x83e76b
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
mov eax, dword [ebp + 0x40]
lea ecx, [esp + 0x130]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0
call fcn.0086bc10
lea ecx, [esp + 0x10]
call fcn.007f4e60
jmp 0x83e8bb
lea ecx, [esp + 0xc]
call fcn.007f4e60
jmp 0x83e4fd
cmp esi, 0xc0000034
je 0x83e7b9
cmp esi, 0xc000003a
jne 0x83e8ad
mov ecx, dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push eax
lea edx, [esp + 0x134]
push edx
mov eax, dword [ecx]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0086bcf0
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0x48]
push eax
call fcn.00832700
push eax
lea eax, [esp + 0x40]
mov ecx, ebx
push eax
call fcn.0083a3e0
lea ecx, [esp + 0x130]
call fcn.0086bc10
push dword [ebp + 0x38]
mov esi, dword [ebx + 0x128]
lea ecx, [esp + 0x544]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
mov edi, dword [esi]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push 0
push 0x40
call fcn.0086b810
push eax
push 0
lea ecx, [esp + 0xb4]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [edi + 0x84]
mov esi, eax
test esi, esi
jne 0x83e8ad
lea ecx, [esp + 0x130]
call fcn.0086bc00
lea eax, [esp + 0x130]
mov ecx, ebx
push eax
push dword [ebp + 0x10]
call fcn.0083c5d0
test eax, eax
je 0x83e8a1
lea eax, [esp + 0x130]
push eax
push dword [ebp + 8]
lea eax, [esp + 0x3c]
push eax
lea ecx, [ebx + 0xfc]
call fcn.007edd20
mov eax, dword [esp + 0x34]
test eax, eax
je 0x83e8a1
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
lea ecx, [esp + 0x130]
call fcn.0086bc10
mov eax, dword [ebp + 0x40]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], esi
mov eax, dword [esp + 0xc]
test eax, eax
je 0x83e904
cmp eax, 0xffffffff
je 0x83e904
push eax
call fcn.008a3c40
mov ecx, dword [esp + 0xc]
xor edx, edx
test eax, eax
cmovne ecx, edx
mov dword [esp + 0xc], ecx
lea ecx, [esp + 0x540]
call fcn.0086bc10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x40
mov eax, dword [ebp + 0x40]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0xc0000034
lea ecx, [esp + 0x540]
call fcn.0086bc10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x40
lea ecx, [esp + 0x130]
call fcn.0086bc00
mov ecx, dword [ebp + 0x14]
lea eax, [esp + 0x3c]
push eax
lea edx, [esp + 0x74c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x1c]
mov ecx, eax
call fcn.0086bcf0
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0x130]
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.00832700
push eax
lea eax, [esp + 0x44]
push eax
call fcn.00851980
add esp, 0xc
lea ecx, [esp + 0x748]
call fcn.0086bc10
push dword [ebp + 0x38]
mov esi, dword [ebx + 0x128]
lea ecx, [esp + 0x134]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
mov edi, dword [esi]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push 0
push 0x40
call fcn.0086b810
push eax
push 0
lea ecx, [esp + 0xb4]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [edi + 0x84]
mov ecx, dword [ebp + 0x40]
mov dword [ecx], 0
mov ecx, dword [ebp + 0x3c]
mov dword [ecx], eax
lea ecx, [esp + 0x130]
call fcn.0086bc10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x40
mov ecx, dword [ebp + 0x14]
lea edx, [esp + 0x130]
push edx
mov eax, dword [ecx]
call dword [eax + 0x1c]
lea ecx, [esp + 0x748]
call fcn.0086bc00
mov edi, dword [ebp + 0x18]
lea eax, [esp + 0x48]
push eax
mov ecx, edi
call fcn.008326d0
push eax
lea ecx, [esp + 0x954]
call fcn.0086baa0
lea ecx, [esp + 0x338]
call fcn.0086bc00
lea ecx, [esp + 0x130]
call fcn.0086b810
push eax
lea ecx, [esp + 0x954]
call fcn.0086bf20
test eax, eax
jne 0x83eaaa
lea eax, [esp + 0x748]
mov ecx, edi
push eax
lea eax, [esp + 0x4c]
push eax
call fcn.008326d0
push eax
mov ecx, ebx
call fcn.0083cf70
lea ecx, [esp + 0x748]
call fcn.0086b810
push eax
lea ecx, [esp + 0x134]
call fcn.0086b810
push eax
lea eax, [esp + 0xb60]
push eax
call fcn.00851950
add esp, 0xc
lea ecx, [esp + 0x338]
push eax
call fcn.0086bc30
lea ecx, [esp + 0xb58]
call fcn.0086bc10
jmp 0x83eabe
lea eax, [esp + 0x950]
push eax
lea ecx, [esp + 0x33c]
call fcn.0086bc30
mov esi, dword [ebx + 0xc]
lea eax, [esp + 0x48]
push eax
mov ecx, edi
call fcn.008326d0
push eax
push esi
call fcn.00852740
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x83eafc
lea eax, [esp + 0x48]
mov ecx, edi
push eax
call fcn.008326d0
push eax
call fcn.00852650
add esp, 4
test eax, eax
jne 0x83eafc
xor edi, edi
jmp 0x83eb01
mov edi, 1
mov esi, dword [ebx + 0xc]
lea ecx, [esp + 0x338]
call fcn.0086b810
push eax
push esi
call fcn.00852740
mov esi, eax
add esp, 8
mov eax, dword [esp + 0x1c]
cmp eax, 3
jne 0x83ec41
test esi, esi
jne 0x83eb52
test edi, edi
je 0x83eb52
lea ecx, [esp + 0x748]
call fcn.0086b810
push eax
lea ecx, [esp + 0x134]
call fcn.0086b810
push eax
mov ecx, ebx
call fcn.0083a3e0
push dword [ebp + 0x38]
mov esi, dword [ebx + 0x128]
lea ecx, [esp + 0x33c]
push dword [ebp + 0x34]
push dword [ebp + 0x30]
mov edi, dword [esi]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push 0
push 0x40
call fcn.0086b810
push eax
push 0
lea ecx, [esp + 0xb4]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [edi + 0x84]
mov ecx, dword [0x100fd618]
mov esi, eax
mov edx, dword [ecx]
call dword [edx + 0xf8]
test eax, eax
je 0x83f04f
lea eax, [esp + 0x3c]
push eax
lea ecx, [esp + 0x33c]
call fcn.0086bcf0
push 0x100e0464
push esi
push 0x100e5b5c
lea eax, [esp + 0x48]
push eax
push 0x100e5b50
push 0x100e5b08
push 0x100e5af8
push 0x100d53c0
push 2
lea ecx, [esp + 0x9c]
call fcn.007ffc30
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801db0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801e50
mov ecx, eax
call fcn.00801ec0
lea ecx, [esp + 0x78]
call fcn.00801c50
jmp 0x83f04f
cmp eax, 1
jne 0x83edbc
cmp dword [esp + 0x10], 0
je 0x83ec63
test esi, esi
jne 0x83ec63
mov byte [esp + 0x23], 0
lea ecx, [esp + 0x950]
jmp 0x83ec98
mov byte [esp + 0x23], 1
test esi, esi
jne 0x83ec91
test edi, edi
je 0x83ec91
lea ecx, [esp + 0x748]
call fcn.0086b810
push eax
lea ecx, [esp + 0x134]
call fcn.0086b810
push eax
mov ecx, ebx
call fcn.0083a3e0
lea ecx, [esp + 0x338]
call fcn.0086b810
push dword [ebp + 0x38]
mov esi, dword [ebx + 0x128]
mov ecx, eax
push dword [ebp + 0x34]
mov eax, dword [ebp + 0x2c]
push dword [ebp + 0x30]
mov edi, dword [esi]
push eax
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push 0
push 0x40
push ecx
push 0
lea ecx, [esp + 0xb4]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [edi + 0x84]
mov ecx, dword [0x100fd618]
mov esi, eax
mov eax, dword [ecx]
call dword [eax + 0xf8]
test eax, eax
je 0x83f04f
cmp byte [esp + 0x23], 0
lea ecx, [esp + 0x338]
jne 0x83ed16
lea ecx, [esp + 0x950]
call fcn.0086b810
push 0x100e0464
push esi
lea ecx, [esp + 0x8c]
mov edi, eax
call fcn.00801370
push eax
movzx eax, byte [esp + 0x2b]
lea ecx, [esp + 0x80]
push 0x100e5b78
push edi
push 0x100e5b50
push eax
push 0x100e5b68
push 0x100e5b08
push 0x100e5af8
push 0x100d53c0
push 2
call fcn.007ffc30
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801e50
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801db0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801d30
mov ecx, eax
call fcn.00801ec0
lea ecx, [esp + 0x78]
call fcn.00801c50
lea ecx, [esp + 0x84]
call fcn.007ed7c0
jmp 0x83f04f
cmp eax, 2
jne 0x83f04b
push dword [ebp + 0xc]
call fcn.008527a0
mov ecx, eax
add esp, 4
test ecx, ecx
jne 0x83eeb2
test esi, esi
jne 0x83eeb2
mov dword [esp + 0x2c], eax
mov dword [esp + 0x10], 0
test eax, eax
je 0x83ef6f
test esi, esi
jne 0x83ef61
test edi, edi
je 0x83ee23
lea ecx, [esp + 0x748]
call fcn.0086b810
push eax
lea ecx, [esp + 0x134]
call fcn.0086b810
push eax
mov ecx, ebx
call fcn.0083a3e0
cmp dword [esp + 0x10], 0
je 0x83ef61
push dword [ebp + 0x38]
mov eax, dword [ebp + 0x30]
lea ecx, [esp + 0x33c]
push dword [ebp + 0x34]
mov esi, dword [ebx + 0x128]
or eax, 0x20
push eax
push 2
push dword [ebp + 0x28]
mov dword [esp + 0x30], 0
push dword [ebp + 0x24]
mov edi, dword [esi]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push 0
push 0x40
call fcn.0086b810
push eax
push 0
lea ecx, [esp + 0xb4]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push 0x100082
lea eax, [esp + 0x44]
mov ecx, esi
push eax
call dword [edi + 0x84]
test eax, eax
je 0x83eede
mov ecx, dword [ebp + 0x40]
mov dword [ecx], 0
mov ecx, dword [ebp + 0x3c]
mov dword [ecx], eax
lea ecx, [esp + 0x1c]
call fcn.007f4e60
jmp 0x83f093
mov eax, 1
mov dword [esp + 0x2c], eax
test ecx, ecx
je 0x83ede6
test esi, esi
jne 0x83ede6
cmp dword [esp + 0x10], esi
je 0x83ede6
mov dword [esp + 0x10], eax
jmp 0x83edfe
mov eax, dword [ebp + 0x2c]
cmp eax, 1
je 0x83eeeb
cmp eax, 3
jne 0x83ef58
mov esi, dword [ebx + 0x128]
lea eax, [esp + 0xc8]
push eax
push 0
push 0x40
mov edi, dword [esi]
lea ecx, [esp + 0x54]
push 0x100d53bc
call fcn.0086b870
mov ecx, eax
call fcn.0086b810
push eax
push dword [esp + 0x2c]
lea ecx, [esp + 0x98]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
mov ecx, esi
call dword [edi + 0xc0]
test eax, eax
jne 0x83ef58
mov eax, dword [esp + 0xe8]
shr eax, 4
not al
test al, 1
je 0x83ef58
push dword [esp + 0x1c]
push dword [ebp + 0x10]
call fcn.00851aa0
add esp, 8
lea ecx, [esp + 0x1c]
call fcn.007f4e60
cmp dword [esp + 0x2c], 0
lea ecx, [esp + 0x338]
jne 0x83ef76
lea ecx, [esp + 0x950]
call fcn.0086b810
push dword [ebp + 0x38]
mov esi, dword [ebx + 0x128]
mov ecx, eax
push dword [ebp + 0x34]
mov eax, dword [ebp + 0x2c]
push dword [ebp + 0x30]
mov edi, dword [esi]
push eax
push dword [ebp + 0x28]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push 0
push 0x40
push ecx
push 0
lea ecx, [esp + 0xb4]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push dword [ebp + 0xc]
mov ecx, esi
push dword [ebp + 8]
call dword [edi + 0x84]
mov ecx, dword [0x100fd618]
mov esi, eax
mov eax, dword [ecx]
call dword [eax + 0xf8]
test eax, eax
je 0x83f04f
mov edi, dword [esp + 0x2c]
lea ecx, [esp + 0x338]
test edi, edi
jne 0x83eff1
lea ecx, [esp + 0x950]
call fcn.0086b810
push 0x100e0464
push esi
push 0x100e5b5c
push eax
push 0x100e5b50
push edi
push 0x100e5b68
push 0x100e5b08
push 0x100e5af8
push 0x100d53c0
push 2
lea ecx, [esp + 0xa4]
call fcn.007ffc30
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801e50
jmp 0x83ec10
mov esi, dword [esp + 0x34]
lea ecx, [esp + 0x338]
call fcn.0086b810
push eax
mov ecx, ebx
call fcn.0083cab0
test esi, esi
jne 0x83f085
test eax, eax
je 0x83f085
test byte [ebp + 0x2c], 6
je 0x83f085
lea ecx, [esp + 0x338]
call fcn.0086b810
push eax
mov ecx, ebx
call fcn.0084c350
mov eax, dword [ebp + 0x40]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], esi
lea ecx, [esp + 0x338]
call fcn.0086bc10
lea ecx, [esp + 0x950]
call fcn.0086bc10
lea ecx, [esp + 0x748]
call fcn.0086bc10
lea ecx, [esp + 0x130]
call fcn.0086bc10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x40
mov eax, dword [ebp + 0x2c]
test eax, eax
je 0x83f0fa
cmp eax, 2
je 0x83f0f0
cmp eax, 1
je 0x83f0f0
cmp eax, 3
je 0x83f0f0
cmp eax, 4
je 0x83f0fa
cmp eax, 5
jne 0x83e52e
cmp eax, 4
je 0x83f0fa
cmp eax, 5
jne 0x83f106
test edi, 1
jne 0x83e52e
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0xf8]
push eax
call fcn.00832700
mov edi, esi
test esi, esi
je 0x83f122
mov eax, dword [esi]
push esi
call dword [eax + 4]
xor ecx, ecx
mov dword [esp + 0x3c], 0
mov dword [esp + 0x74], ecx
xor esi, esi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x44], ecx
lea ecx, [esp + 0x338]
mov dword [esp + 0x40], 0
mov dword [esp + 0xc], esi
mov dword [esp + 0x50], 0xffffffff
call fcn.0086bc00
lea ecx, [esp + 0x540]
call fcn.0086bc00
lea ecx, [esp + 0x54]
call fcn.00832500
mov ecx, dword [esp + 0x40]
mov esi, 1
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x6c], ecx
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0x54]
push eax
call fcn.008325c0
test eax, eax
je 0x83f6f7
cmp dword [esp + 0x54], 0
je 0x83f1f4
lea eax, [esp + 0x58]
push eax
call fcn.008528e0
add esp, 4
test eax, eax
je 0x83f1e7
push dword [esp + 0x5c]
lea ecx, [esp + 0x544]
mov dword [esp + 0x18], 1
push dword [esp + 0x5c]
mov dword [esp + 0x58], 0x10
call fcn.0086bc90
push eax
lea ecx, [esp + 0x33c]
call fcn.0086bc30
jmp 0x83f2ed
mov dword [esp + 0x14], 0
jmp 0x83f2ed
lea eax, [esp + 0x58]
push eax
call fcn.008527e0
add esp, 4
test eax, eax
je 0x83f889
mov eax, dword [esp + 0x60]
cmp eax, 1
jne 0x83f2aa
mov esi, dword [ebx + 0x128]
lea eax, [esp + 0xc8]
mov ecx, dword [ebp + 0x18]
push eax
push 0
mov ebx, dword [esi]
lea eax, [esp + 0x60]
push 0x40
push eax
lea eax, [esp + 0x110]
push eax
call fcn.00862530
push eax
push 0
lea ecx, [esp + 0x12c]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
mov ecx, esi
call dword [ebx + 0xc0]
test eax, eax
jne 0x83f29c
push dword [esp + 0x5c]
mov eax, dword [esp + 0xec]
lea ecx, [esp + 0x544]
push dword [esp + 0x5c]
mov dword [esp + 0x1c], 1
mov dword [esp + 0x58], eax
call fcn.0086bc90
push eax
lea ecx, [esp + 0x33c]
call fcn.0086bc30
mov ebx, dword [esp + 0x30]
jmp 0x83f2ed
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x14], 0
jmp 0x83f2ed
test eax, eax
jne 0x83f86e
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x544]
push eax
lea eax, [esp + 0x340]
push eax
lea eax, [esp + 0x64]
push eax
push dword [esp + 0x6c]
lea eax, [esp + 0x124]
push eax
call fcn.00832550
push eax
call fcn.008520b0
add esp, 0x14
mov dword [esp + 0x14], eax
xor esi, esi
mov dword [esp + 0x2c], esi
cmp dword [esp + 0x14], esi
je 0x83f412
mov ecx, dword [esp + 0x60]
sub ecx, esi
je 0x83f384
dec ecx
jne 0x83f7c7
lea eax, [esp + 0xb8]
push eax
lea ecx, [esp + 0x544]
call fcn.0086bcf0
lea eax, [esp + 0xb0]
push eax
lea ecx, [esp + 0x33c]
call fcn.0086bcf0
mov ecx, dword [ebx + 0x138]
lea edx, [esp + 0xb8]
push 3
push edx
lea edx, [esp + 0xb8]
mov eax, dword [ecx]
push edx
lea edx, [esp + 0x1c]
push edx
call dword [eax + 0xac]
mov esi, dword [eax]
test esi, esi
je 0x83f365
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x83f6c4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x10], 0
jmp 0x83f6c4
lea eax, [esp + 0xc0]
push eax
lea ecx, [esp + 0x544]
call fcn.0086bcf0
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0x33c]
call fcn.0086bcf0
test dword [esp + 0x50], 0x10
mov eax, esi
mov ecx, dword [ebx + 0x138]
setne al
inc eax
push eax
mov edx, dword [ecx]
lea eax, [esp + 0xc4]
push eax
lea eax, [esp + 0xa8]
push eax
lea eax, [esp + 0xa8]
push eax
call dword [edx + 0xac]
mov esi, dword [eax]
test esi, esi
je 0x83f3ed
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [esp + 0x9c]
test eax, eax
je 0x83f6c4
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x9c], 0
jmp 0x83f6c4
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x28]
cmp eax, 1
jne 0x83f428
cmp dword [esp + 0x60], esi
je 0x83f7de
lea ecx, [esp + 0x84]
call fcn.00832500
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0x84]
push eax
call fcn.008325c0
test eax, eax
je 0x83f488
mov eax, dword [esp + 0x90]
test eax, eax
je 0x83f7de
cmp eax, 1
mov eax, dword [ebp + 0x2c]
jne 0x83f48b
cmp eax, 1
je 0x83f857
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x8c]
mov dword [esp + 0x74], 1
mov dword [esp + 0x34], ecx
jmp 0x83f48b
mov eax, dword [ebp + 0x2c]
cmp eax, 1
je 0x83f82b
cmp eax, 4
je 0x83f82b
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x83f53f
mov esi, dword [ebp + 0x30]
lea eax, [esp + 0x28]
push eax
and esi, 1
push esi
push dword [ebp + 0x24]
call fcn.00852330
add esp, 8
push eax
push esi
call fcn.0082fa10
mov ecx, eax
add esp, 0xc
test ecx, ecx
jne 0x83f7f5
push dword [esp + 0x28]
mov ecx, dword [ebx + 0x138]
test esi, esi
setne al
inc eax
mov edx, dword [ecx]
push eax
lea eax, [esp + 0x60]
push eax
push eax
lea eax, [esp + 0x74]
push eax
call dword [edx + 0xa8]
mov esi, dword [eax]
test esi, esi
je 0x83f504
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [esp + 0x64]
test eax, eax
je 0x83f51a
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x64], 0
mov eax, dword [esp + 0xc]
test eax, eax
je 0x83f528
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0xc], esi
test esi, esi
je 0x83f6c4
mov eax, dword [esi]
push esi
call dword [eax + 4]
jmp 0x83f6c4
cmp eax, 1
jne 0x83f6c4
lea eax, [esp + 0x44]
push eax
call fcn.008334f0
mov ecx, eax
add esp, 4
test ecx, ecx
jne 0x83f812
push dword [esp + 0x5c]
mov ecx, dword [ebp + 0x18]
lea eax, [esp + 0xf4]
push eax
call fcn.00832550
lea ecx, [esp + 0x48]
push dword [eax + 4]
push dword [eax]
call fcn.0086b8b0
mov ebx, dword [ebx + 0x128]
lea ecx, [esp + 0x108]
push 0
mov dword [esp + 0x28], esi
push 3
mov esi, dword [ebx]
call fcn.0086b7e0
mov ecx, eax
call fcn.0086b810
push eax
push 0
push 0x40
lea ecx, [esp + 0x5c]
call fcn.0086b810
push eax
push 0
lea ecx, [esp + 0x134]
call fcn.0086b820
mov ecx, eax
call fcn.0086b810
push eax
push 0x180
lea eax, [esp + 0x38]
mov ecx, ebx
push eax
call dword [esi + 0x80]
test eax, eax
jne 0x83f669
mov esi, dword [esp + 0x30]
lea eax, [esp + 0xc8]
push 4
push 0x28
push eax
mov esi, dword [esi + 0x128]
lea ecx, [esp + 0xb4]
mov ebx, dword [esi]
call fcn.0086b7e0
mov ecx, eax
call fcn.0086b810
push eax
push dword [esp + 0x34]
mov ecx, esi
call dword [ebx + 0x98]
test eax, eax
jne 0x83f669
mov eax, dword [esp + 0xe8]
test al, 0x20
jne 0x83f669
or eax, 0x20
lea ecx, [esp + 0x78]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0x30]
push 4
push 0x28
mov esi, dword [eax + 0x128]
lea eax, [esp + 0xd0]
push eax
mov ebx, dword [esi]
call fcn.0086b7e0
mov ecx, eax
call fcn.0086b810
push eax
push dword [esp + 0x34]
mov ecx, esi
call dword [ebx + 0x94]
mov ebx, dword [esp + 0x30]
lea edx, [esp + 0x58]
push dword [esp + 0x44]
push edx
mov ecx, dword [ebx + 0x138]
lea edx, [esp + 0x20]
push edx
mov eax, dword [ecx]
call dword [eax + 0xa4]
push eax
lea ecx, [esp + 0x30]
call fcn.008383f0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x83f6a9
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x18], 0
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x10]
call fcn.008383f0
lea ecx, [esp + 0x24]
call fcn.007f4e60
mov esi, dword [esp + 0x2c]
push esi
push edi
lea ecx, [esp + 0x44]
call fcn.00838f10
test edi, edi
je 0x83f6d9
mov eax, dword [edi]
push edi
call dword [eax + 8]
mov edi, esi
test esi, esi
je 0x83f6eb
mov eax, dword [esi]
push esi
call dword [eax + 4]
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov esi, dword [esp + 0x14]
test esi, esi
jne 0x83f184
mov dword [esp + 0x1c], 0
mov dword [esp + 0x24], 0xffffffff
test esi, esi
je 0x83ff0f
mov ecx, dword [ebp + 0x2c]
cmp ecx, 2
jne 0x83f937
mov ebx, dword [ebp + 0x30]
test ebx, 1
je 0x83f90e
mov ecx, dword [ebp + 0x18]
call fcn.00832a10
test eax, eax
je 0x83f90e
mov eax, dword [ebp + 0x40]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0xc0000103
mov esi, dword [esp + 0xc]
lea ecx, [esp + 0x1c]
call fcn.007ed410
lea ecx, [esp + 0x540]
call fcn.0086bc10
lea ecx, [esp + 0x338]
call fcn.0086bc10
test esi, esi
je 0x83f77b
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov eax, dword [esp + 0x44]
test eax, eax
je 0x83f791
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x44], 0
mov eax, dword [esp + 0x28]
test eax, eax
je 0x83f7a7
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x28], 0
lea ecx, [esp + 0x3c]
call fcn.00837f50
test edi, edi
je 0x84034f
mov eax, dword [edi]
push edi
call dword [eax + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x40
mov eax, dword [ebp + 0x40]
mov dword [eax], esi
mov eax, dword [ebp + 0x3c]
mov esi, dword [esp + 0xc]
mov dword [eax], 0xc0000229
jmp 0x83f759
mov eax, dword [ebp + 0x40]
mov dword [eax], esi
mov eax, dword [ebp + 0x3c]
mov esi, dword [esp + 0xc]
mov dword [eax], 0xc000003a
jmp 0x83f759
mov eax, dword [ebp + 0x40]
and ecx, 0xefffffff
mov esi, dword [esp + 0xc]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], ecx
jmp 0x83f759
mov eax, dword [ebp + 0x40]
and ecx, 0xefffffff
mov dword [eax], esi
mov eax, dword [ebp + 0x3c]
mov esi, dword [esp + 0xc]
mov dword [eax], ecx
jmp 0x83f759
test dword [ebp + 0x30], 1
je 0x83f857
mov ecx, dword [ebp + 0x18]
call fcn.00832a10
test eax, eax
je 0x83f857
mov eax, dword [ebp + 0x40]
mov dword [eax], esi
mov eax, dword [ebp + 0x3c]
mov esi, dword [esp + 0xc]
mov dword [eax], 0xc0000103
jmp 0x83f759
mov eax, dword [ebp + 0x40]
mov dword [eax], esi
mov eax, dword [ebp + 0x3c]
mov esi, dword [esp + 0xc]
mov dword [eax], 0xc0000034
jmp 0x83f759
mov eax, dword [ebp + 0x40]
mov esi, dword [esp + 0xc]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0xc0000229
jmp 0x83f759
mov ecx, dword [0x100fd618]
mov eax, dword [ecx]
call dword [eax + 0xf8]
test eax, eax
je 0x83f8f3
push 0x100e0464
push 0x100e5b84
lea eax, [esp + 0x60]
push eax
push 0x100e58e4
push 0x100e5b08
push 0x100d53c0
push 2
lea ecx, [esp + 0x94]
call fcn.007ffc30
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801db0
mov ecx, eax
call fcn.00801ec0
mov ecx, eax
call fcn.00801ec0
lea ecx, [esp + 0x78]
call fcn.00801c50
mov eax, dword [ebp + 0x40]
mov esi, dword [esp + 0xc]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0xc0000033
jmp 0x83f759
test ebx, 0x40
je 0x83f985
test dword [esp + 0x50], 0x10
je 0x83f985
mov eax, dword [ebp + 0x40]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0xc00000ba
jmp 0x83f74c
cmp ecx, 1
je 0x83fba1
cmp ecx, 3
je 0x83fba1
test ecx, ecx
je 0x83f95b
cmp ecx, 4
je 0x83f95b
cmp ecx, 5
jne 0x83ff17
mov esi, dword [ebp + 0x30]
mov eax, esi
mov edx, dword [esp + 0x50]
and eax, 0x40
je 0x83f971
test edx, 0x10
jne 0x83f920
test eax, eax
jne 0x83f99c
test esi, 1
jne 0x83f99c
test edx, 0x10
je 0x83f99c
mov eax, dword [ebp + 0x40]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0xc0000035
jmp 0x83f74c
test ecx, ecx
jne 0x83f9bf
test edx, 0x10
je 0x83f9bf
mov eax, dword [ebp + 0x40]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0xc000000d
jmp 0x83f74c
test esi, 1
je 0x83f9d3
mov ecx, dword [ebp + 0x18]
call fcn.00832a10
test eax, eax
jne 0x83f9a8
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x28]
cmp eax, 3
jne 0x83fa74
lea eax, [esp + 0x44]
push eax
call fcn.008334f0
add esp, 4
test eax, eax
je 0x83fa0c
mov ecx, dword [ebp + 0x40]
and eax, 0xefffffff
mov dword [ecx], 0
mov ecx, dword [ebp + 0x3c]
mov dword [ecx], eax
jmp 0x83f74c
lea eax, [esp + 0x48]
push eax
mov eax, dword [edi]
lea ecx, [esp + 0xb5c]
push ecx
mov ecx, edi
call dword [eax + 0x2c]
mov ecx, eax
call fcn.0086bcf0
mov ecx, dword [ebx + 0x138]
lea edx, [esp + 0x48]
push dword [esp + 0x44]
push edx
mov eax, dword [ecx]
lea edx, [esp + 0x20]
push edx
call dword [eax + 0xa4]
push eax
lea ecx, [esp + 0x10]
call fcn.008383f0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x83fa63
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x18], 0
lea ecx, [esp + 0xb58]
call fcn.0086bc10
jmp 0x83fb15
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x28]
xor ebx, ebx
cmp eax, 2
lea eax, [esp + 0x28]
push eax
sete bl
push ebx
push dword [ebp + 0x24]
call fcn.00852330
add esp, 8
push eax
push ebx
call fcn.0082fa10
add esp, 0xc
test eax, eax
jne 0x83f9f4
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x544]
call fcn.0086bcf0
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0x33c]
call fcn.0086bcf0
mov eax, dword [esp + 0x30]
mov ecx, edi
push dword [esp + 0x28]
mov esi, dword [eax + 0x138]
mov eax, dword [edi]
mov ebx, dword [esi]
call dword [eax + 0x28]
push eax
lea eax, [esp + 0x50]
mov ecx, esi
push eax
lea eax, [esp + 0xac]
push eax
lea eax, [esp + 0x28]
push eax
call dword [ebx + 0xa8]
push eax
lea ecx, [esp + 0x10]
call fcn.008383f0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x83fb15
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [edi]
lea ecx, [esp + 0x18]
push ecx
mov ecx, edi
call dword [eax + 0x38]
xor ebx, ebx
cmp dword [eax], ebx
mov eax, dword [esp + 0x18]
setne bl
test eax, eax
je 0x83fb36
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
test ebx, ebx
je 0x83fb73
mov eax, dword [edi]
lea ecx, [esp + 0x18]
push ecx
mov ecx, edi
call dword [eax + 0x38]
mov esi, dword [esp + 0xc]
push esi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x48]
mov eax, dword [esp + 0x18]
test eax, eax
je 0x83fb8e
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov edx, dword [ebp + 0x2c]
neg edx
sbb edx, edx
and edx, 3
mov dword [esp + 0x24], edx
jmp 0x83ff17
lea ecx, [esp + 0x3c]
call fcn.0083bdd0
mov esi, dword [esp + 0xc]
mov ecx, dword [ebp + 0x14]
push esi
push ecx
lea ecx, [esp + 0x44]
call fcn.00838f10
mov edx, dword [ebp + 0x2c]
neg edx
sbb edx, edx
and edx, 3
mov dword [esp + 0x24], edx
jmp 0x83ff17
mov eax, dword [esp + 0x50]
cmp eax, 0xffffffff
je 0x83fbc0
test al, 0x10
je 0x83fcce
mov eax, dword [ebp + 0x40]
mov dword [eax], 1
jmp 0x83f74c
push dword [ebp + 0x38]
mov eax, dword [ebp + 0x30]
push dword [ebp + 0x34]
mov esi, dword [ebx + 0x128]
and eax, 0xffffefff
push eax
push ecx
push dword [ebp + 0x28]
mov dword [esp + 0x38], 0
lea ecx, [esp + 0x8c]
push dword [ebp + 0x24]
mov ebx, dword [esi]
push dword [ebp + 0x20]
call fcn.0086b7e0
mov ecx, eax
call fcn.0086b810
push eax
push dword [ebp + 0x10]
lea eax, [esp + 0x48]
mov ecx, esi
push 0x100001
push eax
call dword [ebx + 0x84]
test eax, eax
je 0x83fc32
mov ecx, dword [ebp + 0x40]
mov dword [ecx], 0
mov ecx, dword [ebp + 0x3c]
mov dword [ecx], eax
lea ecx, [esp + 0x24]
call fcn.007ed410
jmp 0x83f74c
lea ecx, [esp + 0x130]
call fcn.0086bc00
mov ebx, dword [esp + 0x30]
lea ecx, [esp + 0x130]
push ecx
push dword [esp + 0x28]
mov ecx, ebx
mov eax, dword [ebx]
call dword [eax + 0x14]
test eax, eax
jne 0x83fc77
lea eax, [esp + 0x50]
push eax
lea ecx, [esp + 0x134]
call fcn.0086b810
push eax
call fcn.008523a0
add esp, 8
test eax, eax
je 0x83fc9f
mov ecx, dword [ebp + 0x40]
mov dword [ecx], 0
mov ecx, dword [ebp + 0x3c]
mov dword [ecx], eax
lea ecx, [esp + 0x130]
call fcn.0086bc10
lea ecx, [esp + 0x24]
call fcn.007ed410
jmp 0x83f74c
test byte [esp + 0x50], 0x10
lea ecx, [esp + 0x130]
mov eax, 1
mov esi, 0
cmovne esi, eax
call fcn.0086bc10
lea ecx, [esp + 0x24]
call fcn.007ed410
test esi, esi
jne 0x83fbb2
mov esi, dword [ebp + 0xc]
push esi
call fcn.008527d0
add esp, 4
test eax, eax
jne 0x83fcef
push esi
call fcn.00852730
add esp, 4
test eax, eax
je 0x83fbb2
push dword [ebp + 0x38]
mov eax, dword [ebp + 0x30]
lea ecx, [esp + 0x7c]
push dword [ebp + 0x34]
mov esi, dword [ebx + 0x128]
and eax, 0xffffefff
push eax
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
mov ebx, dword [esi]
push dword [ebp + 0x24]
push dword [ebp + 0x20]
call fcn.0086b7e0
mov ecx, eax
call fcn.0086b810
push eax
push dword [ebp + 0x10]
lea eax, [esp + 0x40]
mov ecx, esi
push 0x100001
push eax
call dword [ebx + 0x84]
mov ecx, eax
test ecx, ecx
jne 0x83fefc
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x28]
cmp eax, 3
jne 0x83fdd3
lea eax, [esp + 0x44]
push eax
call fcn.008334f0
add esp, 4
test eax, eax
jne 0x83f9f4
lea eax, [esp + 0x48]
push eax
mov eax, dword [edi]
lea ecx, [esp + 0xb5c]
push ecx
mov ecx, edi
call dword [eax + 0x2c]
mov ecx, eax
call fcn.0086bcf0
mov eax, dword [esp + 0x30]
lea edx, [esp + 0x48]
push dword [esp + 0x44]
push edx
mov ecx, dword [eax + 0x138]
lea edx, [esp + 0x20]
push edx
mov eax, dword [ecx]
call dword [eax + 0xa4]
push eax
lea ecx, [esp + 0x10]
call fcn.008383f0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x83fdc2
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x18], 0
lea ecx, [esp + 0xb58]
call fcn.0086bc10
jmp 0x83fe74
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 0x28]
xor ebx, ebx
cmp eax, 2
lea eax, [esp + 0x28]
push eax
sete bl
push ebx
push dword [ebp + 0x24]
call fcn.00852330
add esp, 8
push eax
push ebx
call fcn.0082fa10
add esp, 0xc
test eax, eax
jne 0x83f9f4
lea eax, [esp + 0x48]
push eax
lea ecx, [esp + 0x544]
call fcn.0086bcf0
lea eax, [esp + 0xa0]
push eax
lea ecx, [esp + 0x33c]
call fcn.0086bcf0
mov eax, dword [esp + 0x30]
mov ecx, edi
push dword [esp + 0x28]
mov esi, dword [eax + 0x138]
mov eax, dword [edi]
mov ebx, dword [esi]
call dword [eax + 0x28]
push eax
lea eax, [esp + 0x50]
mov ecx, esi
push eax
lea eax, [esp + 0xac]
push eax
lea eax, [esp + 0x28]
push eax
call dword [ebx + 0xa8]
push eax
lea ecx, [esp + 0x10]
call fcn.008383f0
mov eax, dword [esp + 0x18]
test eax, eax
je 0x83fe74
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
test dword [ebp + 0x30], 0x1000
mov esi, dword [esp + 0xc]
je 0x83fe8a
mov eax, dword [esi]
mov ecx, esi
push 1
call dword [eax + 0x54]
mov eax, dword [edi]
lea ecx, [esp + 0x18]
push ecx
mov ecx, edi
call dword [eax + 0x38]
xor ebx, ebx
cmp dword [eax], ebx
mov eax, dword [esp + 0x18]
setne bl
test eax, eax
je 0x83feab
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
test ebx, ebx
je 0x83fedb
mov eax, dword [edi]
lea ecx, [esp + 0x18]
push ecx
mov ecx, edi
call dword [eax + 0x38]
push esi
mov ecx, dword [eax]
mov eax, dword [ecx]
call dword [eax + 0x48]
mov eax, dword [esp + 0x18]
test eax, eax
je 0x83fef2
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov dword [esp + 0x24], 1
jmp 0x83ff1b
lea ecx, [esp + 0x3c]
call fcn.0083bdd0
mov ecx, dword [ebp + 0x14]
push esi
push ecx
lea ecx, [esp + 0x44]
call fcn.00838f10
mov dword [esp + 0x24], 1
jmp 0x83ff1b
mov eax, dword [ebp + 0x40]
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], ecx
jmp 0x83f74c
mov dword [esp + 0x24], 2
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 0x28]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x18], eax
test eax, eax
je 0x84016c
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x14], 0
test ecx, ecx
je 0x840097
mov edx, dword [ebp + 0x30]
test edx, 1
jne 0x83f73a
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x64], ecx
add ecx, 2
mov word [esp + 0x64], cx
mov ecx, dword [esp + 0x34]
sub ecx, 2
mov dword [esp + 0x68], ecx
mov esi, dword [eax]
lea eax, [esp + 0x14]
push eax
push edx
push dword [ebp + 0x28]
push 0
push dword [ebp + 0x24]
call fcn.00852330
mov ecx, dword [esp + 0x2c]
add esp, 8
push eax
push dword [ebp + 0xc]
lea eax, [esp + 0x78]
push eax
call dword [esi + 0xc]
mov ebx, eax
mov dword [esp + 0x10], ebx
test ebx, ebx
jne 0x840029
mov esi, dword [ebp + 0x18]
mov ecx, esi
call fcn.00832a10
test eax, eax
je 0x840029
lea eax, [esp + 0x78]
mov ecx, esi
push eax
call fcn.00832830
mov ecx, esi
mov eax, dword [eax + 4]
push eax
lea eax, [esp + 0xac]
push eax
call fcn.00832550
lea ecx, [esp + 0x6c]
push dword [eax + 4]
push dword [eax]
call fcn.0086b8b0
mov esi, dword [esp + 0x28]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x70]
mov ebx, dword [esi]
call fcn.0086b810
push eax
mov ecx, esi
call dword [ebx + 0x18]
test eax, eax
jne 0x840025
mov eax, dword [esp + 0x34]
test al, 0x20
jne 0x840025
mov esi, dword [esp + 0x28]
lea ecx, [esp + 0x6c]
or eax, 0x20
mov dword [esp + 0x34], eax
push eax
mov ebx, dword [esi]
call fcn.0086b810
push eax
mov ecx, esi
call dword [ebx + 0x1c]
mov ebx, dword [esp + 0x10]
cmp dword [esp + 0x1c], 0
je 0x840064
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
mov dword [esp + 0x10], 0
push edx
mov eax, dword [ecx]
call dword [eax + 0xc]
push dword [esp + 0x10]
push dword [esp + 0x20]
call fcn.00852990
mov eax, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x840064
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
test ebx, ebx
je 0x8400f2
mov eax, dword [ebp + 0x40]
and ebx, 0xefffffff
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], ebx
mov eax, dword [esp + 0x14]
test eax, eax
je 0x83f74c
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x83f74c
push 0x100d53bc
lea ecx, [esp + 0x7c]
call fcn.0086b870
mov ecx, eax
call fcn.0086b810
mov esi, dword [esp + 0x28]
mov ecx, dword [eax]
mov dword [esp + 0x64], ecx
lea ecx, [esp + 0xa8]
mov eax, dword [eax + 4]
mov dword [esp + 0x68], eax
lea eax, [esp + 0x14]
mov ebx, dword [esi]
push eax
push dword [ebp + 0x30]
push dword [ebp + 0x28]
push dword [ebp + 0xc]
push 0x100d53bc
call fcn.0086b870
mov ecx, eax
call fcn.0086b810
push eax
mov ecx, esi
call dword [ebx + 0x10]
mov ebx, eax
jmp 0x840029
mov ebx, dword [ebp + 0x30]
lea eax, [esp + 0x64]
mov esi, dword [esp + 0xc]
push ebx
push dword [ebp + 0xc]
push dword [esp + 0x1c]
push eax
lea eax, [esp + 0x84]
push esi
push eax
call fcn.0085e6d0
add esp, 0x18
mov eax, dword [eax]
mov dword [esp + 0x6c], eax
mov dword [esp + 0x34], eax
test eax, eax
je 0x84012b
mov ecx, dword [eax]
push eax
call dword [ecx + 4]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x30]
call fcn.008383f0
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x840147
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x74]
test eax, eax
je 0x840155
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x84024e
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x84024e
mov ecx, dword [esp + 0x44]
test ecx, ecx
je 0x84024a
mov ebx, dword [ebp + 0x30]
test ebx, 1
jne 0x83f73a
mov dword [esp + 0x14], 0
lea edx, [esp + 0x14]
mov eax, dword [ecx]
push edx
call dword [eax + 0xc]
test eax, eax
je 0x8401b5
mov ecx, dword [ebp + 0x40]
and eax, 0xefffffff
mov dword [ecx], 0
mov ecx, dword [ebp + 0x3c]
mov dword [ecx], eax
jmp 0x840080
push ebx
push dword [ebp + 0xc]
lea eax, [esp + 0x74]
push dword [esp + 0x1c]
push esi
push eax
call fcn.0085fdc0
add esp, 0x14
mov esi, dword [eax]
mov dword [esp + 0x34], esi
test esi, esi
je 0x8401db
mov eax, dword [esi]
push esi
call dword [eax + 4]
lea eax, [esp + 0x34]
push eax
lea ecx, [esp + 0x30]
call fcn.008383f0
test esi, esi
je 0x8401f3
mov eax, dword [esi]
push esi
call dword [eax + 8]
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x840201
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
cmp dword [esp + 0x1c], 0
je 0x84023c
mov ecx, dword [esp + 0x14]
lea edx, [esp + 0x10]
mov dword [esp + 0x10], 0
push edx
mov eax, dword [ecx]
call dword [eax + 0xc]
push dword [esp + 0x10]
push dword [esp + 0x20]
call fcn.00852990
mov eax, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x84023c
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov eax, dword [esp + 0x14]
test eax, eax
je 0x84024a
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x30]
lea ecx, [esp + 0x34]
push dword [ebx + 0x138]
call fcn.008518c0
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0
push eax
push dword [ebp + 0x10]
mov ecx, ebx
call fcn.0083c3b0
test eax, eax
jne 0x84030f
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ebx, eax
mov eax, dword [ebp + 0x14]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0xc]
cmp eax, ebx
jne 0x84030f
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x8402aa
mov eax, dword [ecx]
push dword [esp + 0x40]
call dword [eax + 0x48]
mov eax, dword [esp + 0x14]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
lea ecx, [esp + 0x34]
call fcn.008518f0
test dword [ebp + 0xc], 0x100000
je 0x8402d6
test dword [ebp + 0x30], 0x30
jne 0x8402d6
mov eax, 1
jmp 0x8402d8
xor eax, eax
mov ecx, dword [esp + 0x30]
push eax
push dword [esp + 0x30]
call fcn.0083baa0
mov ecx, dword [ebp + 8]
mov dword [ecx], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [esp + 0x24]
mov dword [ecx + 4], eax
mov eax, dword [ebp + 0x40]
mov dword [ecx], 0
mov dword [eax], 0
mov eax, dword [ebp + 0x3c]
mov dword [eax], 0
jmp 0x84032f
mov eax, dword [ebp + 0x44]
mov dword [eax], 1
mov eax, dword [esp + 0x14]
test eax, eax
je 0x840326
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
lea ecx, [esp + 0x34]
call fcn.008518f0
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x83f750
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp 0x83f750
mov eax, dword [ebp + 0x40]
mov dword [eax], 1
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x40