Function at 0x8931ac
Capabilities:
Enumerate pe sections
Resolve function by parsing pe exports
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xfc
and dword [esp + 0x64], 0
push ebx
mov ebx, ecx
mov dword [esp + 0x54], 1
push esi
push edi
mov esi, edx
mov dword [esp + 0x64], ebx
mov edi, dword [ebx]
mov dword [esp + 0x60], esi
mov dword [esp + 0x3c], edi
call fcn.008903a5
mov dword [esp + 0x18], eax
test esi, esi
je 0x8943ec
cmp byte [edi + 0x49], 0
jne 0x8943ec
xor eax, eax
cmp dword [ebx + 0x24], eax
jne 0x8943ec
push eax
push eax
push eax
push 0x15
pop edx
mov ecx, ebx
call fcn.0087f84e
add esp, 0xc
test eax, eax
jne 0x8943ec
push 0x30
push eax
lea eax, [esp + 0x80]
push eax
call fcn.008abac0
mov eax, dword [ebp + 8]
add esp, 0xc
push 8
pop ecx
cmp byte [eax], cl
ja 0x893247
mov edx, dword [esi + 0x2c]
mov ecx, edi
call fcn.00879dd0
and dword [esi + 0x2c], 0
and dword [esi + 8], 0xfffffffe
push 0
mov edx, esi
mov ecx, ebx
call fcn.00892cf3
pop ecx
push 9
xor eax, eax
lea edi, [esp + 0xac]
cmp dword [ebx + 0x24], 0
pop ecx
rep stosd dword es:[edi], eax
mov eax, dword [esi + 0x2c]
mov edi, dword [esi + 0x1c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0x24], edi
jne 0x8943b4
mov eax, dword [esp + 0x3c]
cmp byte [eax + 0x49], 0
jne 0x8943b4
mov eax, dword [esi + 8]
shr eax, 3
and eax, 1
mov dword [esp + 0x50], eax
mov eax, dword [ebp + 8]
cmp byte [eax], 9
jne 0x8932af
mov edx, esi
mov ecx, ebx
call fcn.0088fea7
mov eax, dword [ebp + 8]
xor edx, edx
cmp dword [esi + 0x30], edx
jmp 0x8933a8
cmp edx, dword [edi]
jge 0x8933b2
imul eax, edx, 0x48
mov dword [esp + 0x28], eax
test byte [eax + edi + 0x2c], 8
mov ecx, dword [eax + edi + 0x1c]
mov dword [esp + 0x30], ecx
mov ecx, dword [eax + edi + 0x18]
mov dword [esp + 0x14], ecx
je 0x89331b
mov edx, dword [eax + edi + 0x34]
mov ecx, dword [esi + 0x20]
call fcn.0087d0ef
test eax, eax
je 0x893313
mov eax, dword [esp + 0x3c]
mov ecx, 0x2000
test word [eax + 0x44], cx
jne 0x893313
mov edx, dword [esp + 0x28]
and byte [edx + edi + 0x2c], 0xd7
mov edx, dword [edx + edi + 0x34]
mov ecx, dword [esi + 0x20]
call fcn.0088eb15
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x30]
test eax, eax
je 0x8933a0
mov eax, dword [eax]
movsx ecx, word [ecx + 0x2a]
cmp ecx, dword [eax]
jne 0x8933d9
mov eax, dword [esp + 0x30]
test byte [eax + 8], 8
jne 0x8933a0
cmp dword [eax + 0x2c], 0
je 0x893359
test edx, edx
jne 0x893359
test dword [esi + 8], 0x40000
je 0x893359
cmp dword [edi], 1
je 0x8933a0
test byte [edi + 0x74], 0xa
jne 0x8933a0
push dword [esp + 0x50]
mov ecx, ebx
push edx
mov edx, esi
call fcn.00891a80
mov edx, dword [esp + 0x34]
test eax, eax
mov edi, dword [esi + 0x1c]
pop ecx
pop ecx
push 0xffffffffffffffff
pop eax
cmovne edx, eax
mov dword [esp + 0x24], edi
mov eax, dword [esp + 0x3c]
cmp byte [eax + 0x49], 0
jne 0x8943b4
mov eax, dword [ebp + 8]
cmp byte [eax], 8
jbe 0x8933a3
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0xa8], eax
mov eax, dword [ebp + 8]
inc edx
cmp dword [esi + 0x30], 0
mov dword [esp + 0x2c], edx
je 0x8932b9
cmp dword [esi + 0x30], 0
je 0x8933ff
push eax
mov edx, esi
mov ecx, ebx
call fcn.0089091a
cmp dword [esi + 0x34], 0
mov edi, eax
pop ecx
jne 0x8933d2
mov ecx, ebx
call fcn.0086b322
mov eax, edi
jmp 0x8943ef
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx]
push dword [eax]
mov eax, dword [esp + 0x18]
push dword [eax]
movsx eax, word [eax + 0x2a]
push eax
push 0x4a6728
push ebx
call fcn.00856054
add esp, 0x14
jmp 0x8943b4
xor ecx, ecx
mov dword [esp + 0x30], ecx
cmp dword [edi], ecx
jle 0x8936e9
mov edi, dword [esp + 0x18]
imul eax, ecx, 0x48
mov ecx, dword [esp + 0x24]
add ecx, 8
add ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [ecx + 0x38]
or eax, dword [ecx + 0x3c]
jne 0x893445
push dword [ecx + 4]
push 0x49a1c0
push dword [ecx + 8]
mov ecx, ebx
push 0x14
pop edx
call fcn.0087f84e
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov eax, dword [ecx + 0x14]
mov dword [esp + 0x14], eax
test eax, eax
je 0x8936d4
cmp dword [ecx + 0x18], 0
je 0x89347b
test byte [ecx + 0x28], 0x10
jne 0x8936d4
push dword [ecx + 0x18]
push dword [ecx + 0x1c]
mov ecx, edi
push 0xe
pop edx
call fcn.0086b177
pop ecx
pop ecx
jmp 0x8936d4
mov ecx, esi
call fcn.00878ec8
add dword [ebx + 0x198], eax
mov ecx, 0x1000
mov eax, dword [esp + 0x3c]
test word [eax + 0x44], cx
jne 0x8934ba
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
movzx eax, byte [ecx + 0x24]
shr eax, 5
and eax, 1
push eax
push dword [ecx + 0x2c]
mov ecx, ebx
push dword [esi + 0x20]
call fcn.00891eef
add esp, 0xc
cmp dword [esp + 0x30], 0
mov edx, dword [esp + 0x10]
mov eax, dword [ebx + 0x1b4]
mov dword [esp + 0x58], eax
mov eax, dword [edx + 8]
mov dword [ebx + 0x1b4], eax
jne 0x89359e
mov eax, dword [esp + 0x24]
cmp dword [eax], 1
je 0x8934ef
test byte [eax + 0x74], 0xa
je 0x89359e
mov edi, dword [esp + 0x18]
mov ecx, edi
call fcn.0086b561
lea esi, [eax + 1]
mov eax, dword [ebx + 0x2c]
push esi
inc eax
push 0
push eax
mov dword [ebx + 0x2c], eax
mov dword [edx + 0x1c], eax
push 0xf
pop edx
call fcn.0086b0f3
mov eax, dword [esp + 0x1c]
lea ecx, [esp + 0xd8]
add esp, 0xc
mov dword [eax + 0x18], esi
push dword [eax + 0x1c]
push 0xd
pop edx
call fcn.0088e7c5
add esp, 4
push dword [esp + 0x14]
push 0x4a6750
push 1
push ebx
call fcn.0086b2ce
mov edx, dword [esp + 0x24]
lea eax, [esp + 0xdc]
push eax
mov ecx, ebx
call fcn.008931ac
mov edx, dword [esp + 0x24]
add esp, 0x14
mov eax, dword [esp + 0x14]
mov ecx, dword [edx + 0x10]
mov ax, word [eax + 6]
mov word [ecx + 0x2c], ax
mov ecx, edi
mov eax, dword [esp + 0xd4]
or dword [edx + 0x28], 0x10
mov dword [edx + 0x20], eax
mov edx, dword [edx + 0x1c]
call fcn.0086b3a0
lea edx, [esi - 1]
mov ecx, edi
call fcn.0086b698
mov ecx, ebx
call fcn.0087d5cd
mov esi, dword [esp + 0x60]
jmp 0x8936ab
mov edi, dword [esp + 0x18]
xor eax, eax
mov dword [esp + 0x34], eax
mov ecx, edi
mov eax, dword [ebx + 0x2c]
inc eax
push eax
push 0
mov dword [ebx + 0x2c], eax
mov dword [edx + 0x1c], eax
push 0x43
pop edx
call fcn.0086b177
pop ecx
pop ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x44], eax
inc eax
push 8
mov dword [ecx + 0x18], eax
pop eax
test byte [ecx + 0x28], al
jne 0x8935e7
push 0x14
pop edx
mov ecx, edi
call fcn.0086b155
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x34], eax
mov edx, ecx
mov ecx, dword [esp + 0x24]
call fcn.00893144
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
test eax, eax
je 0x893625
push dword [eax + 0x2c]
push dword [ecx + 0x2c]
mov ecx, edi
push 0x6c
pop edx
call fcn.0086b177
mov eax, dword [esp + 0x30]
pop ecx
pop ecx
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x14]
mov ax, word [eax + 6]
mov word [ecx + 6], ax
jmp 0x893661
push dword [ecx + 0x2c]
lea ecx, [esp + 0xd0]
push 0xc
pop edx
call fcn.0088e7c5
add esp, 4
push dword [esp + 0x14]
push 0x4a6760
push 1
push ebx
call fcn.0086b2ce
mov edx, dword [esp + 0x24]
lea eax, [esp + 0xdc]
push eax
mov ecx, ebx
call fcn.008931ac
add esp, 0x14
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x10]
mov eax, dword [esp + 0x14]
mov ax, word [eax + 6]
mov word [ecx + 0x2c], ax
mov eax, dword [esp + 0x34]
test eax, eax
je 0x893685
mov edx, eax
mov ecx, edi
call fcn.0086b698
mov eax, dword [esp + 0x10]
mov ecx, edi
push dword [eax + 0x1c]
push 0x3f
pop edx
call fcn.0086b163
mov edx, dword [esp + 0x48]
pop ecx
push eax
mov ecx, edi
call fcn.0086b650
pop ecx
mov ecx, ebx
call fcn.0087d5cd
mov eax, dword [esp + 0x3c]
cmp byte [eax + 0x49], 0
jne 0x8943b4
mov ecx, esi
call fcn.00878ec8
sub dword [ebx + 0x198], eax
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x18]
mov dword [ebx + 0x1b4], eax
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
inc ecx
mov dword [esp + 0x30], ecx
cmp ecx, dword [eax]
jl 0x893411
mov eax, dword [esi + 0x20]
xor ecx, ecx
mov edx, dword [esi]
inc ecx
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x40], eax
mov eax, dword [esi + 0x24]
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x28]
mov dword [esp + 0x54], eax
mov al, byte [esi + 8]
and al, cl
mov dword [esp + 0x14], edx
mov byte [esp + 0x23], al
mov byte [esp + 0xcc], al
mov eax, dword [esi + 8]
and al, 9
cmp al, cl
jne 0x893752
or eax, 0xffffffff
mov ecx, edi
push eax
call fcn.0087cf47
mov edx, dword [esp + 0x18]
pop ecx
test eax, eax
jne 0x893752
mov ecx, dword [esp + 0x3c]
and dword [esi + 8], 0xfffffffe
push eax
call fcn.0087973a
mov edx, dword [esp + 0x18]
pop ecx
mov dword [esp + 0x10], eax
mov dword [esi + 0x24], eax
test edi, edi
je 0x89379a
push dword [edx]
mov edx, edi
mov ecx, ebx
push 0
call fcn.0088f93c
mov edx, dword [ebx + 0x28]
mov ecx, eax
push 0xfffffffffffffff7
push ecx
push 0
lea eax, [edx + 1]
mov dword [esp + 0xc4], edx
mov dword [ebx + 0x28], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax]
mov eax, dword [edi]
inc ecx
mov edi, dword [esp + 0x2c]
add eax, ecx
push eax
push edx
push 0x6e
pop edx
mov ecx, edi
call fcn.0086b23d
add esp, 0x1c
jmp 0x8937a1
mov edi, dword [esp + 0x18]
or eax, 0xffffffff
mov dword [esp + 0xbc], eax
mov eax, dword [ebp + 8]
cmp byte [eax], 0xc
jne 0x8937c5
mov ecx, dword [esp + 0x14]
push dword [ecx]
mov ecx, edi
push dword [eax + 4]
push 0x6e
pop edx
call fcn.0086b177
pop ecx
pop ecx
mov ecx, edi
call fcn.0086b3bd
mov ecx, 0x4000
mov dword [esp + 0xe8], eax
test dword [esi + 8], ecx
jne 0x8937e6
mov ecx, 0x140
mov word [esi + 6], cx
push eax
mov edx, esi
mov ecx, ebx
call fcn.008903c5
cmp dword [esi + 0xc], 0
pop ecx
jne 0x893816
mov eax, dword [esp + 0xbc]
test eax, eax
js 0x893816
push 0x6f
mov edx, eax
mov ecx, edi
call fcn.0086b641
or byte [esp + 0xc8], 1
pop ecx
test byte [esi + 8], 1
je 0x893872
mov esi, dword [ebx + 0x28]
mov edx, dword [esp + 0x60]
push 0xfffffffffffffff7
push ecx
lea eax, [esi + 1]
mov dword [esp + 0xd8], esi
mov dword [ebx + 0x28], eax
mov ecx, ebx
mov edx, dword [edx]
push 0
push 0
call fcn.0088f93c
add esp, 0xc
mov ecx, edi
push eax
push 0
push 0
push esi
push 0x6e
pop edx
call fcn.0086b23d
add esp, 0x14
mov dword [esp + 0xd4], eax
mov ecx, edi
push 8
pop eax
mov edx, eax
call fcn.0086b680
mov esi, dword [esp + 0x60]
push 3
pop eax
jmp 0x893874
xor al, al
cmp dword [esp + 0x50], 0
mov byte [esp + 0xcd], al
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x10]
jne 0x8939a9
test eax, eax
jne 0x8939a9
xor ecx, ecx
mov eax, 0x100
cmp byte [esp + 0x23], cl
mov edx, 0x4000
cmovne ecx, eax
mov ax, word [esi + 8]
and ax, dx
mov edx, dword [esp + 0x24]
or cx, ax
movsx eax, word [esi + 6]
push eax
movzx ecx, cx
push ecx
push dword [esi]
mov ecx, ebx
push dword [esp + 0x28]
push dword [esp + 0x50]
call fcn.0089fb34
mov ecx, eax
add esp, 0x14
mov dword [esp + 0x54], ecx
test ecx, ecx
je 0x8943b4
call fcn.0089bd59
cmp ax, word [esi + 6]
jge 0x8938f1
mov word [esi + 6], ax
cmp byte [esp + 0x23], 0
je 0x89391d
call fcn.0089bd5e
mov edx, dword [esp + 0x30]
mov ecx, eax
test ecx, ecx
movzx eax, cl
mov ecx, dword [esp + 0x54]
movzx edx, dl
cmovne edx, eax
mov dword [esp + 0x30], edx
mov byte [esp + 0xcd], dl
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x893951
call fcn.0089bd63
mov edx, eax
mov dword [esp + 0xac], edx
call fcn.0089bd68
mov byte [esp + 0xc5], al
xor ecx, ecx
mov eax, dword [esp + 0x1c]
cmp edx, dword [eax]
cmove eax, ecx
mov dword [esp + 0xa8], eax
mov edx, dword [esp + 0xbc]
test edx, edx
js 0x893967
test eax, eax
jne 0x893967
mov ecx, edi
call fcn.0086b7e3
mov ecx, dword [esp + 0x54]
call fcn.0089bd71
push eax
call fcn.0089bd6d
push eax
mov eax, dword [ebp + 8]
mov edx, esi
push eax
lea eax, [esp + 0xd8]
mov ecx, ebx
push eax
lea eax, [esp + 0xb8]
push eax
or eax, 0xffffffff
push eax
call fcn.0088f191
mov ecx, dword [esp + 0x6c]
add esp, 0x18
call fcn.008a0427
jmp 0x894344
and dword [esp + 0x4c], 0
and dword [esp + 0x28], 0
test eax, eax
je 0x8939f8
mov edx, dword [esi]
mov ecx, dword [edx]
test ecx, ecx
jle 0x8939d3
add edx, 0x1a
xor edi, edi
dec ecx
mov word [edx], di
lea edx, [edx + 0x18]
test ecx, ecx
jg 0x8939c2
mov edi, dword [esp + 0x18]
mov ecx, dword [eax]
test ecx, ecx
jle 0x8939ed
lea edx, [eax + 0x1a]
xor edi, edi
dec ecx
mov word [edx], di
lea edx, [edx + 0x18]
test ecx, ecx
jg 0x8939dc
mov edi, dword [esp + 0x18]
push 0x42
pop ecx
cmp word [esi + 6], cx
jle 0x8939fe
jmp 0x8939fa
xor ecx, ecx
mov word [esi + 6], cx
mov edx, dword [esp + 0x1c]
mov ecx, eax
push 0xffffffffffffffff
call fcn.0087cf47
pop ecx
xor ecx, ecx
test eax, eax
push 1
pop eax
cmove ecx, eax
mov dword [esp + 0x44], ecx
mov ecx, edi
call fcn.0086b3bd
mov dword [esp + 0x2c], eax
lea edi, [esp + 0xec]
xor eax, eax
push 7
pop ecx
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x10]
lea eax, [esp + 0x78]
mov edi, dword [esp + 0x24]
mov dword [esp + 0xf4], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [esp + 0xec], ebx
mov dword [esp + 0xf0], edi
mov dword [esp + 0x88], eax
test ecx, ecx
je 0x893a6e
mov eax, dword [ecx]
mov dword [esp + 0x84], eax
jmp 0x893a76
and dword [esp + 0x84], 0
mov edx, dword [esp + 0x14]
mov dword [esp + 0x90], ecx
lea ecx, [esp + 0xec]
call fcn.0087d4cd
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0xec]
call fcn.0087d4cd
mov eax, dword [esp + 0x54]
test eax, eax
je 0x893acf
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x893ac1
mov edx, esi
mov ecx, ebx
call fcn.00893112
mov eax, dword [esi + 0x20]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x54]
mov edx, eax
lea ecx, [esp + 0xec]
call fcn.0087d49f
cmp dword [esi + 0x24], 0
mov eax, dword [esp + 0x98]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0xa4]
jne 0x893b1a
cmp dword [esi + 0x28], 0
jne 0x893b1a
cmp eax, 1
jne 0x893b1a
mov edx, dword [esp + 0xa0]
lea eax, [esp + 0x70]
mov ecx, dword [esp + 0x3c]
push eax
mov edx, dword [edx]
call fcn.00891ff1
mov byte [esp + 0x3f], al
mov eax, dword [esp + 0xa8]
pop ecx
jmp 0x893b1f
mov byte [esp + 0x3b], 0
and dword [esp + 0x34], 0
test eax, eax
jle 0x893b8e
mov ax, word [esp + 0x104]
xor esi, esi
mov edi, dword [esp + 0x34]
push 8
pop ebx
or ax, bx
lea ecx, [esp + 0xec]
mov word [esp + 0x104], ax
mov eax, dword [esp + 0xa0]
mov edx, dword [eax + esi]
mov edx, dword [edx + 0x14]
call fcn.0087d4cd
mov ax, word [esp + 0x104]
lea esi, [esi + 0x10]
mov ecx, 0xfff7
and ax, cx
inc edi
mov word [esp + 0x104], ax
cmp edi, dword [esp + 0xa4]
jl 0x893b39
mov ebx, dword [esp + 0x64]
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x24]
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x3c]
cmp byte [eax + 0x49], 0
jne 0x8943b4
mov ecx, dword [esp + 0x10]
test ecx, ecx
je 0x89414c
mov eax, dword [ebx + 0x28]
mov edx, ecx
push dword [esp + 0x98]
mov dword [esp + 0x80], eax
mov ecx, ebx
inc eax
push 0
mov dword [ebx + 0x28], eax
call fcn.0088f93c
mov edi, dword [esp + 0x20]
mov ecx, edi
push 0xfffffffffffffff7
push eax
push 0
push dword [esp + 0x98]
mov dword [esp + 0xfc], eax
push dword [esp + 0x94]
push 0x6f
pop edx
call fcn.0086b23d
mov dword [esp + 0x90], eax
add esp, 0x1c
mov eax, dword [ebx + 0x2c]
mov ecx, edi
inc eax
mov dword [esp + 0x58], eax
inc eax
mov dword [esp + 0x1c], eax
inc eax
mov dword [ebx + 0x2c], eax
call fcn.0086b3bd
inc dword [ebx + 0x2c]
mov ecx, edi
mov dword [esp + 0x64], eax
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x34], eax
call fcn.0086b3bd
mov ecx, dword [ebx + 0x2c]
mov edx, dword [esp + 0x10]
push dword [esp + 0x1c]
mov dword [esp + 0x54], eax
lea eax, [ecx + 1]
add ecx, dword [edx]
mov dword [esp + 0x6c], eax
mov dword [ebx + 0x2c], ecx
push 0
lea eax, [ecx + 1]
mov dword [esp + 0x50], eax
mov eax, dword [edx]
add eax, ecx
mov ecx, edi
push 0x43
pop edx
mov dword [ebx + 0x2c], eax
call fcn.0086b177
push dword [esp + 0x60]
mov ecx, edi
push 0
push 0x43
pop edx
call fcn.0086b177
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx]
mov ecx, dword [esp + 0x78]
dec eax
add eax, ecx
push eax
push ecx
push 0
push 0x46
pop edx
mov ecx, edi
call fcn.0086b0f3
add esp, 0x1c
mov ecx, edi
push dword [esp + 0x50]
push dword [esp + 0x38]
push 0xe
pop edx
call fcn.0086b177
push 0
cmp dword [esp + 0x50], 0
mov ecx, 0x240
mov edx, dword [esp + 0x30]
push 0x40
pop eax
cmovne eax, ecx
mov ecx, ebx
movzx eax, ax
push eax
push 0
push dword [esp + 0x24]
push dword [esp + 0x58]
call fcn.0089fb34
mov edx, eax
add esp, 0x1c
mov dword [esp + 0x6c], edx
test edx, edx
je 0x8943b4
mov ecx, edx
call fcn.0089bd63
mov ecx, dword [esp + 0x10]
cmp eax, dword [ecx]
jne 0x893cfc
xor esi, esi
mov dword [esp + 0x5c], esi
jmp 0x893e94
cmp byte [esp + 0x23], 0
je 0x893d0e
test byte [esi + 8], 1
mov edx, 0x4a6774
je 0x893d13
mov edx, 0x4a6780
mov ecx, ebx
call fcn.0088f9e6
mov esi, dword [esp + 0x10]
mov dword [esp + 0x5c], 1
mov eax, dword [esi]
mov ecx, eax
mov dword [esp + 0x28], eax
mov edx, eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x4c], eax
test eax, eax
jle 0x893d61
mov eax, dword [esp + 0x94]
add eax, 0xc
cmp dword [eax], edx
jl 0x893d53
inc ecx
inc edx
add eax, 0x18
sub dword [esp + 0x4c], 1
jne 0x893d4d
mov dword [esp + 0x40], ecx
mov edx, ecx
mov ecx, ebx
call fcn.0087d565
mov ecx, ebx
mov dword [esp + 0x24], eax
call fcn.0087b5d3
push 0
push 0
push dword [esp + 0x2c]
mov edx, esi
mov ecx, ebx
call fcn.0087c4fd
mov ecx, dword [esp + 0xa4]
xor eax, eax
add esp, 0xc
mov dword [esp + 0x4c], eax
test ecx, ecx
jle 0x893de5
mov edi, dword [esp + 0x28]
xor esi, esi
mov edx, dword [esp + 0x94]
cmp dword [edx + esi + 0xc], edi
jl 0x893dd5
mov eax, dword [esp + 0x24]
mov ecx, ebx
add eax, edi
push eax
push dword [edx + esi + 4]
push dword [edx + esi + 8]
mov edx, dword [edx + esi]
call fcn.0087b5a1
mov ecx, dword [esp + 0xa4]
add esp, 0xc
mov eax, dword [esp + 0x4c]
inc edi
inc eax
add esi, 0x18
mov dword [esp + 0x4c], eax
cmp eax, ecx
jl 0x893da0
mov edi, dword [esp + 0x18]
mov ecx, ebx
call fcn.0087d503
mov esi, eax
mov ecx, edi
push esi
push dword [esp + 0x44]
push dword [esp + 0x2c]
push 0x65
pop edx
call fcn.0086b0f3
add esp, 0xc
mov edx, 0x80
mov ecx, edi
push esi
push dword [esp + 0x80]
call fcn.0086b177
mov edx, esi
mov ecx, ebx
call fcn.0087d522
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x2c]
push esi
call fcn.0087d59b
mov ecx, dword [esp + 0x78]
add esp, 0xc
call fcn.008a0427
mov edx, dword [ebx + 0x28]
mov ecx, ebx
mov dword [esp + 0x4c], edx
mov dword [esp + 0x80], edx
lea eax, [edx + 1]
mov dword [ebx + 0x28], eax
call fcn.0087d503
push esi
push eax
push edx
push 0x71
pop edx
mov ecx, edi
mov dword [esp + 0x34], eax
call fcn.0086b0f3
add esp, 0xc
mov ecx, edi
push dword [esp + 0x2c]
push dword [esp + 0x80]
push 0x23
pop edx
call fcn.0086b177
pop ecx
pop ecx
mov ecx, ebx
mov byte [esp + 0x79], 1
call fcn.0087b5d3
mov edx, dword [esp + 0x6c]
xor esi, esi
inc esi
cmp dword [esp + 0x44], 0
je 0x893eca
mov eax, dword [esp + 0x3c]
test byte [eax + 0x44], 4
jne 0x893eca
test esi, esi
jne 0x893eb4
mov ecx, edx
call fcn.0089f297
test eax, eax
je 0x893eca
mov edx, dword [esp + 0xbc]
mov ecx, edi
and dword [esp + 0xa8], 0
call fcn.0086b7e3
mov ecx, edi
call fcn.0086b561
mov ecx, ebx
mov dword [esp + 0x40], eax
call fcn.0087b5d3
test esi, esi
je 0x893efc
push dword [esp + 0x4c]
mov ecx, edi
push dword [esp + 0x2c]
push dword [esp + 0x84]
push 0x7b
pop edx
call fcn.0086b0f3
add esp, 0xc
mov esi, dword [esp + 0x10]
xor ecx, ecx
mov dword [esp + 0x28], ecx
cmp dword [esi], ecx
jle 0x893f5a
lea edx, [esi + 4]
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x48]
add eax, ecx
cmp dword [esp + 0x5c], 0
push eax
je 0x893f33
push ecx
push dword [esp + 0x54]
mov ecx, edi
push 0x62
pop edx
call fcn.0086b0f3
add esp, 0xc
jmp 0x893f42
mov byte [esp + 0x7c], 1
mov ecx, ebx
mov edx, dword [edx]
call fcn.0087c40b
pop ecx
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
inc ecx
add edx, 0x18
mov dword [esp + 0x28], ecx
mov dword [esp + 0x44], edx
cmp ecx, dword [esi]
jl 0x893f11
mov ecx, dword [esp + 0xe4]
push 0xfffffffffffffff7
call fcn.0088f933
push eax
push dword [esi]
mov ecx, edi
push dword [esp + 0x54]
push dword [esp + 0x78]
push 0x54
pop edx
call fcn.0086b23d
add esp, 0x14
mov ecx, edi
call fcn.0086b561
mov esi, eax
lea eax, [esi + 1]
push eax
push 0
push eax
push 0x12
pop edx
call fcn.0086b0f3
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov edx, dword [esp + 0x48]
mov ecx, ebx
push dword [eax]
push dword [esp + 0x6c]
call fcn.0087b61d
push dword [esp + 0x6c]
mov eax, dword [esp + 0x28]
mov ecx, edi
inc eax
push eax
push 0xe
pop edx
call fcn.0086b177
push dword [esp + 0x3c]
mov ecx, edi
push dword [esp + 0x30]
push 0x30
pop edx
call fcn.0086b177
push dword [esp + 0x68]
mov ecx, edi
push dword [esp + 0x50]
push 0xe
pop edx
call fcn.0086b177
mov edx, esi
mov ecx, edi
call fcn.0086b698
lea edx, [esp + 0x98]
mov ecx, ebx
call fcn.00892e39
push dword [esp + 0x78]
mov ecx, edi
push 1
push 0x43
pop edx
call fcn.0086b177
add esp, 0x28
cmp dword [esp + 0x5c], 0
je 0x894032
push dword [esp + 0x40]
mov ecx, edi
push dword [esp + 0x80]
push 3
pop edx
call fcn.0086b177
pop ecx
pop ecx
jmp 0x894046
mov ecx, dword [esp + 0x6c]
call fcn.008a0427
mov edx, dword [esp + 0x74]
mov ecx, edi
call fcn.0086b7e3
mov esi, dword [esp + 0x1c]
mov ecx, edi
push dword [esp + 0x64]
lea eax, [esi + 1]
push eax
push 0xe
pop edx
call fcn.0086b177
mov edx, dword [esp + 0x34]
mov ecx, edi
call fcn.0086b18c
mov ecx, edi
call fcn.0086b561
push esi
mov esi, dword [esp + 0x24]
mov edi, eax
push 1
push 0x43
pop edx
mov ecx, esi
call fcn.0086b177
mov eax, dword [esp + 0x2c]
mov ecx, esi
inc eax
push eax
push 0x3f
pop edx
call fcn.0086b163
mov edx, dword [esp + 0x78]
add esp, 0x14
mov ecx, esi
call fcn.0086b3ff
call fcn.0086b561
mov esi, eax
lea eax, [esi + 2]
push eax
push dword [esp + 0x5c]
push 0x30
pop edx
call fcn.0086b177
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc eax
push eax
push 0x3f
pop edx
call fcn.0086b163
add esp, 0xc
lea edx, [esp + 0x78]
mov ecx, ebx
call fcn.00892de0
push 0x10
inc esi
push esi
push dword [esp + 0x5c]
push ebx
call fcn.0087c9b1
mov eax, dword [ebp + 8]
mov ecx, ebx
push edi
push esi
mov esi, dword [esp + 0x78]
mov edx, esi
push eax
lea eax, [esp + 0xe8]
push eax
lea eax, [esp + 0xc8]
push eax
or eax, 0xffffffff
push eax
call fcn.0088f191
mov eax, dword [esp + 0x44]
mov edi, dword [esp + 0x40]
inc eax
push eax
push 0x3f
pop edx
mov ecx, edi
call fcn.0086b163
mov edx, dword [esp + 0x7c]
add esp, 0x2c
mov ecx, edi
call fcn.0086b3ff
lea edx, [esp + 0x78]
mov ecx, ebx
call fcn.00892d48
push dword [esp + 0x34]
mov ecx, edi
push 0x3f
pop edx
call fcn.0086b163
pop ecx
jmp 0x894339
lea edx, [esp + 0x78]
mov ecx, esi
call fcn.00892062
mov dword [esp + 0x58], eax
test eax, eax
je 0x894288
mov ecx, dword [ebx]
mov edi, eax
mov edx, dword [edi + 0x48]
call fcn.0088e18e
mov ecx, eax
mov eax, dword [ebx + 0x28]
mov dword [esp + 0x34], eax
mov edx, ecx
inc eax
mov dword [esp + 0x28], ecx
mov dword [ebx + 0x28], eax
mov ecx, ebx
xor eax, eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x48], eax
mov eax, dword [edi + 0x1c]
mov dword [esp + 0x44], eax
call fcn.00883842
push dword [edi]
mov edx, dword [esp + 0x2c]
mov ecx, ebx
push 0
push dword [edi + 0x1c]
call fcn.0087f8f7
add esp, 0xc
test byte [edi + 0x24], 0x20
je 0x8941c4
mov ecx, edi
call fcn.0088035b
mov ecx, eax
mov dword [esp + 0x48], ecx
jmp 0x8941c8
mov ecx, dword [esp + 0x48]
mov eax, dword [edi + 8]
test eax, eax
je 0x8941fc
test byte [eax + 0x38], 4
jne 0x8941f1
movzx edx, word [eax + 0x30]
cmp dx, word [edi + 0x2e]
jge 0x8941f1
cmp dword [eax + 0x24], 0
jne 0x8941f1
test ecx, ecx
je 0x8941ef
cmp dx, word [ecx + 0x30]
jge 0x8941f1
mov ecx, eax
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x8941cf
mov dword [esp + 0x48], ecx
test ecx, ecx
je 0x894214
mov eax, dword [ecx + 0x2c]
mov edx, ecx
mov ecx, ebx
mov dword [esp + 0x44], eax
call fcn.00883ce3
mov dword [esp + 0x50], eax
mov edi, dword [esp + 0x18]
mov ecx, edi
push 1
push dword [esp + 0x2c]
push dword [esp + 0x4c]
push dword [esp + 0x40]
push 0x6a
pop edx
call fcn.0086b36e
mov eax, dword [esp + 0x60]
add esp, 0x10
test eax, eax
je 0x89424c
push 0xfffffffffffffff7
push eax
or eax, 0xffffffff
mov ecx, edi
mov edx, eax
call fcn.0086b8a2
pop ecx
pop ecx
mov eax, dword [esp + 0xa0]
mov ecx, edi
push dword [eax + 8]
push dword [esp + 0x38]
push 0x66
pop edx
call fcn.0086b177
push dword [esp + 0x3c]
mov ecx, edi
push 0x72
pop edx
call fcn.0086b163
mov eax, dword [esp + 0x54]
add esp, 0xc
mov edx, dword [esp + 0x58]
mov ecx, ebx
push eax
call fcn.0089302d
pop ecx
jmp 0x894303
lea edx, [esp + 0x78]
mov ecx, ebx
call fcn.00892d48
mov al, byte [esp + 0x3b]
mov edx, edi
push 0
movzx eax, al
mov ecx, ebx
push eax
push 0
push dword [esp + 0x7c]
push dword [esp + 0x50]
call fcn.0089fb34
mov edi, eax
add esp, 0x14
mov dword [esp + 0x74], edi
test edi, edi
je 0x8943b4
lea edx, [esp + 0x78]
mov ecx, ebx
call fcn.00892e39
mov ecx, edi
call fcn.0089bd63
test eax, eax
jle 0x8942eb
call fcn.0089bd71
mov edi, dword [esp + 0x18]
mov edx, eax
mov ecx, edi
call fcn.0086b18c
jmp 0x8942ef
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x74]
call fcn.008a0427
lea edx, [esp + 0x78]
mov ecx, ebx
call fcn.00892de0
and dword [esp + 0xa8], 0
push 0x10
push dword [esp + 0x30]
push dword [esp + 0x5c]
push ebx
call fcn.0087c9b1
mov eax, dword [esp + 0x3c]
mov edx, esi
push eax
push eax
mov eax, dword [ebp + 8]
mov ecx, ebx
push eax
push 0
or eax, 0xffffffff
push 0
push eax
call fcn.0088f191
add esp, 0x28
mov edx, dword [esp + 0x2c]
mov ecx, edi
call fcn.0086b3ff
cmp byte [esp + 0x30], 3
jne 0x894357
mov edx, 0x4a6774
mov ecx, ebx
call fcn.0088f9e6
cmp dword [esp + 0xa8], 0
je 0x89439a
cmp dword [esp + 0xac], 0
mov eax, 0x4a643c
mov edx, 0x4a678c
mov ecx, ebx
cmovle edx, eax
call fcn.0088f9e6
mov eax, dword [esp + 0x14]
mov edx, esi
push dword [ebp + 8]
mov ecx, ebx
push dword [eax]
lea eax, [esp + 0xb0]
push eax
call fcn.0088f9fa
add esp, 0xc
mov edx, dword [esp + 0xe8]
mov ecx, edi
call fcn.0086b3ff
xor eax, eax
cmp dword [ebx + 0x24], eax
setg al
mov dword [esp + 0x5c], eax
mov esi, dword [esp + 0x3c]
mov ecx, esi
mov edx, dword [esp + 0x70]
call fcn.00879dd0
mov edx, dword [esp + 0x94]
mov ecx, esi
call fcn.00853d0a
mov edx, dword [esp + 0xa0]
mov ecx, esi
call fcn.00853d0a
mov ecx, ebx
call fcn.0086b322
mov eax, dword [esp + 0x5c]
jmp 0x8943ef
xor eax, eax
inc eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret