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

Disassembly:
mov eax, 0x3edc
call fcn.10107480
mov eax, dword [0x101be8d0]
xor eax, esp
mov dword [esp + 0x3ed8], eax
mov eax, dword [esp + 0x3ee8]
mov edx, dword [esp + 0x3efc]
mov ecx, dword [esp + 0x3eec]
push ebx
push ebp
mov ebp, dword [esp + 0x3ee8]
mov dword [esp + 0x78], eax
mov eax, dword [ebp + 0xb0]
push esi
mov dword [esp + 0x48], edx
mov edx, dword [eax + 0x218]
mov dword [esp + 0x10], eax
mov eax, dword [edx + 0x220]
push edi
mov edi, dword [ebp]
xor ebx, ebx
shl eax, 0x10
push 0x80
mov dword [esp + 0x80], eax
mov dword [esp + 0x7c], ecx
mov ecx, dword [ebp + 0x34]
lea eax, [esp + 0x110]
push ebx
lea esi, [ebp + 4]
push eax
mov dword [esp + 0x30], ebp
mov dword [esp + 0x28], ebx
mov dword [esp + 0x70], esi
mov dword [esp + 0x74], ecx
mov dword [esp + 0x4c], ebx
mov byte [esp + 0x2f], bl
mov byte [esp + 0x27], bl
mov dword [esp + 0x68], ebx
mov dword [esp + 0x7c], 0x1312d00
call fcn.10104ed0
xor eax, eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0xf4], eax
mov eax, 0xa
mov ecx, 0x14
mov dword [esp + 0x108], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xb0], eax
xor eax, eax
mov dword [esp + 0xc8], ecx
mov dword [esp + 0xa8], ecx
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x3ebc], eax
mov dword [esp + 0x90], ebx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], ebx
mov dword [esp + 0xf8], edi
mov dword [esp + 0xfc], esi
mov dword [esp + 0x100], 0x10
mov dword [esp + 0x104], ebx
mov dword [esp + 0x10c], ebx
mov dword [esp + 0x110], ebx
mov dword [esp + 0x114], ebx
mov dword [esp + 0xc0], edi
mov dword [esp + 0xc4], esi
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xd4], ebx
mov dword [esp + 0xd8], ebx
mov dword [esp + 0xdc], ebx
mov dword [esp + 0xa0], edi
mov dword [esp + 0xa4], esi
mov dword [esp + 0xac], ebx
mov dword [esp + 0xb4], ebx
mov dword [esp + 0xb8], ebx
mov dword [esp + 0xbc], ebx
mov dword [esp + 0x3ec0], eax
mov dword [esp + 0x3ec4], eax
mov dword [esp + 0x3ec8], eax
mov dword [esp + 0x3ecc], eax
mov dword [esp + 0x3ed0], eax
mov dword [esp + 0x3ed4], eax
mov dword [esp + 0x3ebc], esi
mov eax, dword [esp + 0x3f14]
push ecx
lea edx, [ebp + 0xf0]
push edx
push eax
lea ecx, [esp + 0x3ec8]
push ecx
mov ecx, dword [esp + 0x84]
lea edx, [esp + 0xb0]
push edx
mov edx, dword [esp + 0xa0]
lea eax, [esp + 0xd4]
push eax
push ecx
push edx
mov eax, ebp
lea esi, [esp + 0x1b8]
call fcn.1006b1a0
mov eax, dword [esp + 0x40]
mov ecx, dword [eax + 0x218]
mov edx, dword [ecx + 0x21c]
mov ecx, dword [esp + 0x78]
add esp, 0x2c
cmp byte [ebp + 9], bl
setne byte [esp + 0x13]
shl edx, 0x10
mov dword [ecx], edx
cmp byte [ebp + 9], bl
je 0x1006eb23
mov edx, dword [eax + 0x214]
mov eax, dword [edx + 0x614]
mov dword [esp + 0x74], eax
jmp 0x1006eb2b
mov dword [esp + 0x74], 0x30
mov esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x74]
push esi
call fcn.1006bcb0
mov ebp, eax
add esp, 4
test ebp, ebp
jne 0x1006eb4f
mov dword [esp + 0x1c], 0x40
jmp 0x10070a3b
mov ebx, 0x11
lea eax, [esp + 0xec]
call fcn.1006cad0
test al, al
je 0x1006eb6b
mov dword [esp + 0x100], ebx
mov ecx, dword [esp + 0x3ef4]
mov edx, dword [ecx]
mov eax, dword [esp + 0x108]
mov dword [eax], edx
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [ecx + 8]
mov dword [eax + 8], edx
mov ecx, dword [ecx + 0xc]
mov dword [eax + 0xc], ecx
cmp dword [esi], 0
mov dword [esp + 0x30], eax
mov dword [esp + 0x48], 0
jne 0x10070a3b
mov edx, dword [esp + 0x30]
mov eax, dword [edx + 0xc]
cmp eax, dword [edx + 8]
jb 0x1006ebc4
mov ebx, dword [esp + 0x48]
neg ebx
sbb bl, bl
and bl, 0xfd
add bl, 0xe
mov byte [esp + 0x1a], bl
jmp 0x1006ebec
mov cl, byte [eax]
inc eax
mov dword [edx + 0xc], eax
movzx eax, cl
mov byte [esp + 0x1a], al
cmp al, 0xb
je 0x1006ebd9
cmp al, 0xe
jne 0x1006ebe8
mov edx, dword [esp + 0x24]
cmp byte [edx + 9], 0
je 0x1006ebe8
mov byte [esp + 0x1a], 0
mov bl, byte [esp + 0x1a]
mov eax, dword [esp + 0x24]
mov al, byte [eax + 8]
mov dl, byte [esp + 0x1b]
test al, al
je 0x1006ec6a
test dl, dl
jne 0x1006ec32
cmp bl, 1
je 0x1006ec32
cmp bl, 3
je 0x1006ec32
cmp bl, 0xd
je 0x1006ec32
cmp bl, 0xa
je 0x1006ec32
cmp bl, 0xb
je 0x1006ec32
cmp bl, 0xc
je 0x1006ec32
cmp bl, 0xe
je 0x1006ec32
cmp bl, 0x20
jae 0x1006ec32
mov ecx, dword [ebp + 8]
mov dword [ebp + 0xc], ecx
jmp 0x1006eba4
xor edi, edi
cmp dword [esp + 0x5c], edi
jle 0x1006ec52
cmp bl, 0xa
je 0x1006ec52
cmp bl, 0xb
je 0x1006ec52
cmp bl, 0xc
je 0x1006ec52
cmp bl, 0x20
jae 0x1006ec52
mov dword [esp + 0x5c], edi
cmp byte [esp + 0x23], 0
je 0x1006ec6c
cmp bl, 0x20
jae 0x1006ec6c
cmp bl, 0xc
je 0x1006ec6c
mov byte [esp + 0x23], 0
jmp 0x1006ec6c
xor edi, edi
mov ecx, dword [esp + 0x64]
cmp dword [ecx], edi
jne 0x10070a3b
sub dword [esp + 0x70], 1
je 0x1006f3d7
movzx esi, bl
cmp esi, 0x1f
ja case.default.0x1006ec8f
jmp dword [esi*4 + 0x10070b34]
mov edx, dword [esp + 0x24]
cmp byte [edx + 9], 0
je case.0x1006ec8f.0
mov eax, edx
cmp byte [eax + 0x5d], 0
jne 0x1006f3d7
mov eax, ebp
call fcn.1006bda0
cmp eax, edi
jl case.0x1006ec8f.0
mov ecx, edx
mov dword [ecx + 0x78], eax
mov edx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov edx, dword [esp + 0x24]
cmp byte [edx + 9], 0
je case.0x1006ec8f.0
mov eax, edx
cmp dword [eax + 0x60], edi
je 0x1006f3d7
mov ebx, eax
mov edx, dword [ebx + 0x80]
mov eax, dword [ebx + 0x7c]
mov ecx, dword [ebx + 0x224]
push edx
mov edx, dword [ebx + 0x78]
push eax
mov eax, dword [ecx + 0xc]
push edx
lea esi, [ebx + 0x5c]
push esi
call eax
add esp, 0x10
test al, al
je 0x1006ed39
mov edx, dword [ebx + 0x80]
mov eax, dword [ebx + 0x7c]
mov ecx, dword [ebx + 0x224]
push edx
mov edx, dword [ebx + 0x78]
push eax
mov eax, dword [ecx + 0x10]
push edx
push esi
call eax
add esp, 0x10
mov dword [esp + 0x1c], eax
cmp eax, edi
jne 0x10070a3b
mov eax, ebp
call fcn.1006bda0
cmp eax, dword [esp + 0x74]
ja 0x1006f3d7
push eax
push esi
mov eax, ebp
call fcn.1006e620
add esp, 8
mov byte [ebx + 0x5d], 1
jmp 0x1006eba4
test al, al
jne 0x1006edad
cmp byte [esp + 0x3eb4], al
jne case.0x1006ec8f.0
xor edx, edx
mov ecx, dword [esp + 0x4c]
lea eax, [esp + 0x13]
push eax
push ecx
lea eax, [esp + 0xbc]
push eax
mov eax, dword [esp + 0x30]
push ebp
call fcn.1006e210
mov ecx, dword [esp + 0x24]
add esp, 0x10
cmp byte [ecx + 0x224], 0
jne 0x10070a3b
mov edx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0x20]
mov edx, dword [edx + 4]
jmp 0x1006ed72
test al, al
jne 0x1006ee07
cmp byte [esp + 0x3eb4], al
jne case.0x1006ec8f.0
xor edx, edx
mov eax, dword [esp + 0x4c]
lea ecx, [esp + 0x13]
push ecx
push eax
lea ecx, [esp + 0x9c]
push ecx
mov eax, dword [esp + 0x30]
push ebp
call fcn.1006e210
mov edx, dword [esp + 0x24]
add esp, 0x10
cmp byte [edx + 0x224], 0
jne 0x10070a3b
mov edx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x20]
mov edx, dword [eax]
jmp 0x1006edcc
mov eax, dword [ebp + 0xc]
sub eax, dword [ebp + 8]
sar eax, 3
cmp eax, 1
jbe 0x1006ee3a
cmp byte [esp + 0x13], 0
jne 0x1006ee3a
xor ecx, ecx
mov edx, ebp
call fcn.1006be50
add eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x4c]
mov dword [ecx], eax
mov edx, dword [esp + 0x14]
cmp byte [edx + 0x224], 0
mov byte [esp + 0x13], 1
jne 0x10070a3b
mov ecx, ebp
call fcn.1006bdf0
add dword [esp + 0x3f08], eax
mov eax, edx
cmp dword [eax + 0x1d4], edi
jne case.0x1006ec8f.0
mov ecx, dword [esp + 0x3f08]
mov edx, dword [esp + 0x3f04]
push ecx
push edx
lea eax, [esp + 0x194]
push eax
call fcn.1006e830
mov edx, dword [ebp + 8]
add esp, 0xc
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov ebx, dword [ebp + 0xc]
sub ebx, dword [ebp + 8]
xor esi, esi
sar ebx, 3
cmp ebx, edi
jbe 0x1006eef4
mov edi, dword [esp + 0x3f04]
lea ecx, [ecx]
mov ecx, esi
mov edx, ebp
call fcn.1006be50
lea ecx, [esi + 1]
mov edx, ebp
add edi, eax
call fcn.1006be50
mov ecx, dword [esp + 0x3f08]
add ecx, eax
push ecx
push edi
lea eax, [esp + 0x194]
mov dword [esp + 0x3f10], ecx
call fcn.1006ddc0
add esi, 2
add esp, 8
cmp esi, ebx
jb 0x1006eeb0
mov dword [esp + 0x3f04], edi
mov ecx, dword [ebp + 8]
mov dword [ebp + 0xc], ecx
jmp 0x1006eba4
mov esi, dword [ebp + 0xc]
sub esi, dword [ebp + 8]
sar esi, 3
cmp bl, 6
sete bl
xor edi, edi
test esi, esi
jbe 0x1006ef5a
mov ecx, edi
mov edx, ebp
call fcn.1006be50
test bl, bl
je 0x1006ef2a
add dword [esp + 0x3f04], eax
jmp 0x1006ef31
add dword [esp + 0x3f08], eax
mov edx, dword [esp + 0x3f08]
mov eax, dword [esp + 0x3f04]
push edx
push eax
test bl, bl
lea eax, [esp + 0x194]
sete bl
call fcn.1006ddc0
inc edi
add esp, 8
cmp edi, esi
jb 0x1006ef14
mov ecx, dword [ebp + 8]
mov dword [ebp + 0xc], ecx
jmp 0x1006eba4
mov eax, dword [ebp + 0xc]
sub eax, dword [ebp + 8]
xor esi, esi
sar eax, 3
mov dword [esp + 0x2c], eax
cmp eax, 6
jb 0x1006f034
lea ecx, [ecx]
mov ecx, esi
mov edx, ebp
call fcn.1006be50
mov edi, eax
add edi, dword [esp + 0x3f04]
lea ecx, [esi + 1]
mov edx, ebp
call fcn.1006be50
mov ebx, eax
add ebx, dword [esp + 0x3f08]
lea ecx, [esi + 2]
mov edx, ebp
call fcn.1006be50
add eax, edi
lea ecx, [esi + 3]
mov edx, ebp
mov dword [esp + 0x28], eax
call fcn.1006be50
add eax, ebx
lea ecx, [esi + 4]
mov edx, ebp
mov dword [esp + 0x34], eax
call fcn.1006be50
add eax, dword [esp + 0x28]
lea ecx, [esi + 5]
mov edx, ebp
mov dword [esp + 0x3c], eax
call fcn.1006be50
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
add eax, ecx
push eax
push edx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x30]
push ecx
push eax
mov eax, ebx
mov ecx, edi
lea edx, [esp + 0x19c]
call fcn.1006df30
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
add esi, 6
lea eax, [esi + 6]
add esp, 0x10
mov dword [esp + 0x3f04], ecx
mov dword [esp + 0x3f08], edx
cmp eax, dword [esp + 0x2c]
jbe 0x1006ef80
mov bl, byte [esp + 0x1a]
cmp bl, 0x18
jne 0x1006f07d
mov ecx, esi
mov edx, ebp
call fcn.1006be50
mov edi, dword [esp + 0x3f04]
add edi, eax
lea ecx, [esi + 1]
mov edx, ebp
mov dword [esp + 0x3f04], edi
call fcn.1006be50
mov ecx, dword [esp + 0x3f08]
add ecx, eax
push ecx
push edi
lea eax, [esp + 0x194]
mov dword [esp + 0x3f10], ecx
call fcn.1006ddc0
add esp, 8
mov ecx, dword [ebp + 8]
mov dword [ebp + 0xc], ecx
jmp 0x1006eba4
test al, al
je case.0x1006ec8f.0
mov eax, dword [esp + 0x14]
call fcn.10069c00
mov edx, dword [ebp + 8]
mov byte [esp + 0x13], 1
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
cmp dword [esp + 0x48], 0x10
jg 0x1006f3d7
mov esi, dword [esp + 0x48]
inc esi
mov edx, esi
lea ecx, [esp + 0xec]
call fcn.1006cb60
mov dword [esp + 0x30], eax
mov eax, ebp
call fcn.1006bda0
mov edx, dword [esp + 0x24]
cmp byte [edx + 8], 0
je 0x1006f0ff
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx + 0x268]
cmp ecx, edi
je 0x1006f0ff
push ecx
push eax
call fcn.1004ced0
add esp, 8
cmp eax, edi
je 0x1006f0fc
mov eax, dword [eax]
jmp 0x1006f0ff
or eax, 0xffffffff
push eax
mov eax, dword [esp + 0x34]
cmp bl, 0x1d
je 0x1006f114
mov ecx, dword [esp + 0x18]
call fcn.1006adb0
jmp 0x1006f11d
mov edx, dword [esp + 0x18]
call fcn.1006ac10
add esp, 4
test eax, eax
jne 0x1006f3d7
mov dword [esp + 0x48], esi
jmp 0x1006eba4
cmp dword [esp + 0x48], 1
jl 0x1006f3d7
mov edx, dword [esp + 0x48]
dec edx
lea ecx, [esp + 0xec]
mov dword [esp + 0x48], edx
call fcn.1006cb60
mov dword [esp + 0x30], eax
jmp 0x1006eba4
mov eax, dword [esp + 0x30]
call fcn.1006bc80
movzx edx, al
lea ecx, [edx - 8]
cmp ecx, 0x1d
ja case.0x1006f175.9
movzx ecx, byte [ecx + 0x10070bcc]
jmp dword [ecx*4 + 0x10070bb4]
push edi
push 0x101674bc
jmp 0x1006f1c5
push edi
push 0x101675b4
lea edx, [esp + 0x194]
push edx
lea eax, [esp + 0x3f14]
push eax
lea ecx, [esp + 0x3f14]
push ecx
push ebp
call fcn.1006e3f0
mov edx, dword [ebp + 8]
add esp, 0x18
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
push edi
push 0x101675c0
jmp 0x1006f1c5
push 1
push 0x101675cc
lea edx, [esp + 0x194]
push edx
lea eax, [esp + 0x3f14]
push eax
lea ecx, [esp + 0x3f14]
push ecx
push ebp
call fcn.1006e3f0
add esp, 0x18
jmp 0x1006eba4
mov ecx, dword [esp + 0x24]
cmp byte [ecx + 9], 0
jne case.0x1006ec8f.0
cmp al, 0x26
jae case.0x1006ec8f.0
mov cl, byte [ecx + 8]
test cl, cl
je 0x1006f221
cmp dword [esp + 0x5c], edi
jle 0x1006f221
cmp al, 0x11
je 0x1006f221
mov edx, dword [ebp + 8]
mov dword [esp + 0x5c], edi
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
cmp edx, 0x21
ja case.0x1006ec8f.0
jmp dword [edx*4 + 0x10070bec]
test cl, cl
je case.0x1006ec8f.0
cmp al, 1
sete byte [esp + 0x1a]
xor ecx, ecx
mov edx, ebp
call fcn.1006be50
mov ecx, 2
mov edx, ebp
mov edi, eax
call fcn.1006be50
mov ecx, 4
mov edx, ebp
mov ebx, eax
call fcn.1006be50
mov ecx, 1
mov edx, ebp
mov dword [esp + 0x34], eax
call fcn.1006be50
mov esi, ebx
sub esi, edi
sub esi, eax
mov ecx, 2
mov eax, ebp
call fcn.1006beb0
mov ecx, 3
mov edx, ebp
call fcn.1006be50
mov esi, dword [esp + 0x34]
sub esi, ebx
sub esi, eax
mov ecx, 4
mov eax, ebp
call fcn.1006beb0
cmp byte [esp + 0x1a], 0
je 0x1006f2ce
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 0x20]
mov edx, dword [eax]
lea ecx, [esp + 0x13]
push ecx
mov ecx, dword [esp + 0x50]
lea eax, [esp + 0x98]
push ecx
push eax
jmp 0x1006edde
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0x20]
mov edx, dword [edx + 4]
lea ecx, [esp + 0x13]
push ecx
mov ecx, dword [esp + 0x50]
lea eax, [esp + 0xb8]
push ecx
push eax
jmp 0x1006edde
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
test eax, eax
je 0x1006f31c
cmp edx, edi
je 0x1006f31c
mov eax, 1
push eax
mov eax, ebp
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
xor eax, eax
push eax
mov eax, ebp
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
test eax, eax
jne 0x1006f356
cmp edx, edi
jne 0x1006f356
push eax
mov eax, ebp
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
mov eax, 1
push eax
mov eax, ebp
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
xor ecx, ecx
cmp eax, edi
sete cl
mov eax, ebp
push ecx
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
test cl, cl
je case.0x1006ec8f.0
mov edx, dword [esp + 0x14]
mov edx, dword [edx + 4]
mov eax, ebp
call fcn.1006bda0
mov esi, eax
mov eax, ebp
call fcn.1006bda0
mov ecx, ebp
mov edi, eax
call fcn.1006bdf0
mov ecx, ebp
mov dword [esp + 0x70], eax
call fcn.1006bdf0
mov ecx, ebp
mov ebx, eax
call fcn.1006bdf0
cmp byte [esp + 0x3f00], 0
mov dword [esp + 0x3c], eax
je 0x10070688
mov eax, 0x12
jmp 0x10070a3f
test cl, cl
je case.0x1006ec8f.0
mov ecx, ebp
call fcn.1006bdf0
mov esi, dword [esp + 0x14]
mov edx, dword [esi + 0x24]
mov ecx, ebp
mov dword [edx + 4], eax
call fcn.1006bdf0
mov ecx, dword [esi + 0x24]
mov dword [ecx], eax
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
mov ecx, dword [esi + 0x20]
add dword [ecx], eax
mov ecx, dword [esi + 0x20]
add dword [ecx + 4], edx
cmp byte [esi + 0x2f], 0
mov byte [esp + 0x13], 1
jne 0x10070a3b
cmp byte [esp + 0x1b], 0
je case.0x1006ec8f.0
add dword [esp + 0x3f04], eax
add dword [esp + 0x3f08], edx
mov edx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
cmp eax, 0x80000001
jge 0x1006f476
push closesocket
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
cmp eax, edi
jge 0x1006fd1c
neg eax
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
add eax, edx
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
sub eax, edx
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
test cl, cl
je 0x1006f4f6
cmp byte [esp + 0x23], 0
je 0x1006f4f6
mov eax, ebp
call fcn.1006bda0
mov edx, eax
mov eax, ebp
call fcn.1006bda0
mov byte [esp + 0x23], 0
jmp 0x1006f506
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
push edx
push eax
call fcn.1004c6d0
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 0xc
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
cmp eax, 0x80000001
jge 0x1006f53f
push closesocket
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
neg eax
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
xor ecx, ecx
cmp eax, edx
sete cl
mov eax, ebp
push ecx
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
test cl, cl
je 0x1006eba4
mov eax, ebp
call fcn.1006bda0
mov edi, eax
mov eax, ebp
call fcn.1006bda0
mov ecx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
sub esi, ecx
sar esi, 3
xor edx, edx
sub esi, eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x40], edx
mov dword [esp + 0x5c], edx
cmp edi, 0x1c
ja case.0x1006f5bb.4
movzx ebx, byte [edi + 0x10070cb4]
jmp dword [ebx*4 + 0x10070c74]
cmp eax, 3
jne 0x100708c9
cmp byte [esp + 0x1b], 0
je 0x1006f5ef
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x1d4], edx
je 0x100708c9
cmp dword [eax + 0x1d8], 7
jne 0x100708c9
mov edx, dword [esp + 0x3f04]
push edx
mov eax, ebp
call fcn.1006bd60
mov eax, dword [esp + 0x3f0c]
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 8
mov dword [esp + 0x40], 2
jmp 0x1006eba4
cmp eax, edx
jne 0x100708c9
cmp byte [esp + 0x1b], 0
je 0x1006eba4
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0xc]
movsx edx, word [ecx + 0x3a]
movsx esi, word [ecx + 0x16]
lea edx, [edx + esi + 6]
cmp edx, dword [ecx + 4]
jbe 0x1006f661
push 0
push 6
push ecx
call fcn.10052820
add esp, 0xc
test eax, eax
jne 0x10070a3b
mov eax, dword [esp + 0x14]
mov dword [eax + 0x1d4], 1
mov dword [eax + 0x1d8], 0
jmp 0x1006eba4
cmp eax, edx
jne 0x100708c9
cmp byte [esp + 0x1b], 0
je 0x1006eba4
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x1d4], 0
je 0x100708c9
mov esi, dword [eax + 0x1d8]
lea edx, [esi - 1]
lea ecx, [esi + 1]
mov dword [eax + 0x1d8], ecx
cmp edx, 5
ja 0x1006eba4
mov eax, dword [eax + 0xc]
movsx ecx, word [eax + 0x3a]
movsx edx, word [eax + 0x16]
lea ecx, [ecx + edx + 1]
cmp ecx, dword [eax + 4]
jbe 0x1006f6e2
push 0
push 1
push eax
call fcn.10052820
add esp, 0xc
test eax, eax
jne 0x100708c9
cmp esi, 3
lea eax, [esi - 3]
jg 0x1006f6ec
mov eax, esi
mov edx, dword [esp + 0x3f04]
mov ecx, dword [esp + 0x3f08]
add eax, eax
mov dword [esp + eax*4 + 0xcc], edx
mov dword [esp + eax*4 + 0xd0], ecx
cmp esi, 3
je 0x1006f718
cmp esi, 6
jne 0x1006eba4
mov edx, dword [esp + 0xe8]
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xe0]
push edx
mov edx, dword [esp + 0xe0]
push eax
mov eax, dword [esp + 0xe0]
push ecx
mov ecx, dword [esp + 0xe0]
push edx
lea edx, [esp + 0x19c]
call fcn.1006df30
add esp, 0x10
jmp 0x1006eba4
cmp eax, 1
jne 0x100708c9
cmp byte [esp + 0x1b], 0
je 0x1006f7c6
xor eax, eax
mov dword [esp + 0x3eb4], eax
mov dword [esp + 0x3eb0], eax
mov dword [esp + 0x3eb8], eax
mov dword [esp + 0x3ebc], eax
mov dword [esp + 0x3ec0], eax
mov dword [esp + 0x3ec4], eax
mov dword [esp + 0x3ec8], eax
mov eax, dword [esp + 0x64]
mov dword [esp + 0xa8], edx
mov dword [esp + 0xc8], edx
mov dword [esp + 0x3eb0], eax
mov byte [esp + 0x3eb4], 0
mov byte [esp + 0x3eb5], 1
mov dword [esp + 0x40], 1
jmp 0x1006eba4
mov ecx, dword [esp + 0x14]
mov ebx, dword [ecx + 0x284]
cmp ebx, edx
je 0x100708c9
xor ecx, ecx
cmp edi, 0x12
sete cl
lea edi, [ecx + edi - 0xd]
mov ecx, dword [ebx]
imul ecx, edi
mov dword [esp + 0x44], edi
cmp eax, ecx
jne 0x100708c9
lea eax, [edi + esi]
mov dword [esp + 0x28], eax
mov dword [esp + 0x50], esi
cmp edi, edx
jbe 0x1006f885
mov ecx, edi
mov dword [esp + 0x3c], ecx
jmp 0x1006f820
mov ecx, dword [esp + 0x50]
mov edx, ebp
call fcn.1006be50
mov edi, 1
mov dword [esp + 0x2c], eax
cmp dword [ebx], edi
jbe 0x1006f86a
mov esi, dword [esp + 0x28]
lea esp, [esp]
mov ecx, esi
mov edx, ebp
call fcn.1006be50
mov edx, dword [ebx + 0x88]
mov ecx, dword [edx + edi*4]
push ecx
push eax
call fcn.10078b70
add dword [esp + 0x34], eax
inc edi
add esp, 8
inc esi
cmp edi, dword [ebx]
jb 0x1006f840
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
mov eax, ebp
call fcn.1006beb0
inc ecx
sub dword [esp + 0x3c], 1
mov dword [esp + 0x50], ecx
jne 0x1006f820
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x44]
sub edx, esi
mov ecx, ebp
call fcn.1006bef0
mov dword [esp + 0x40], esi
jmp 0x1006eba4
mov esi, dword [esp + 0x14]
mov edi, dword [esi + 0x284]
cmp eax, 1
jne 0x100708c9
cmp edi, edx
je 0x100708c9
mov eax, ebp
call fcn.1006bda0
cmp eax, edx
jl 0x100708c9
mov ecx, dword [edi]
lea edx, [ecx + eax]
cmp edx, dword [esi + 0x28c]
ja 0x100708c9
mov edx, dword [edi + 0x88]
add ecx, ecx
add ecx, ecx
push ecx
mov ecx, dword [esi + 0x288]
push edx
lea edx, [ecx + eax*4]
push edx
call fcn.10105350
add esp, 0xc
jmp 0x1006eba4
cmp eax, 2
jne 0x100708c9
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
add eax, edx
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 4
mov dword [esp + 0x40], 1
jmp 0x1006eba4
cmp eax, 2
jne 0x100708c9
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
sub eax, edx
jmp 0x1006f918
cmp eax, 2
jne 0x100708c9
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
push edx
push eax
call fcn.10078b70
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 0xc
mov dword [esp + 0x40], 1
jmp 0x1006eba4
cmp eax, 2
jne 0x100708c9
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov esi, eax
call fcn.1006bdf0
cmp esi, edx
je 0x100708c9
push esi
push eax
call fcn.1004c6d0
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 0xc
mov dword [esp + 0x40], 1
jmp 0x1006eba4
cmp eax, 2
jne 0x100708c9
mov esi, dword [esp + 0x14]
cmp dword [esi + 0x284], edx
je 0x100708c9
mov eax, ebp
call fcn.1006bda0
mov edi, eax
cmp edi, edx
jl 0x100708c9
cmp edi, dword [esi + 0x28c]
jae 0x100708c9
mov ecx, ebp
call fcn.1006bdf0
mov ecx, dword [esi + 0x288]
mov dword [ecx + edi*4], eax
jmp 0x1006eba4
cmp eax, 1
jne 0x100708c9
mov esi, dword [esp + 0x14]
cmp dword [esi + 0x284], edx
je 0x100708c9
mov eax, ebp
call fcn.1006bda0
cmp eax, edx
jl 0x100708c9
cmp eax, dword [esi + 0x28c]
jae 0x100708c9
mov edx, dword [esi + 0x288]
mov eax, dword [edx + eax*4]
jmp 0x1006f918
cmp eax, 4
jne 0x100708c9
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
mov ecx, ebp
mov esi, eax
call fcn.1006bdf0
mov ecx, ebp
mov edi, eax
call fcn.1006bdf0
cmp esi, edx
jle 0x1006f918
mov eax, edi
jmp 0x1006f918
cmp eax, edx
jne 0x100708c9
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0x218]
mov eax, dword [edx + 0x288]
mov esi, eax
shl esi, 0xd
mov ecx, eax
xor eax, esi
mov esi, eax
shr esi, 0x11
xor eax, esi
and ecx, 0xffff
mov esi, eax
inc ecx
shl esi, 5
xor esi, eax
mov dword [edx + 0x288], esi
push ecx
jmp 0x1006f919
cmp eax, edx
jl 0x100708c9
cmp edi, edx
jl 0x100708c9
cmp eax, 3
jle 0x1006fae8
mov eax, 3
cmp eax, 1
mov dword [esp + 0x5c], eax
jl 0x1006eba4
lea edx, [esp + eax*4 + 0x80]
mov esi, eax
mov edi, edi
mov ecx, ebp
call fcn.1006bdf0
mov dword [edx], eax
sub edx, 4
sub esi, 1
jne 0x1006fb00
jmp 0x1006eba4
test cl, cl
je 0x1006eba4
cmp dword [esp + 0x40], 0
jle 0x1006fb2e
dec dword [esp + 0x40]
jmp 0x1006eba4
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x1006f3d7
mov edx, dword [esp + eax*4 + 0x80]
dec eax
mov dword [esp + 0x5c], eax
push edx
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
jmp 0x1006eba4
mov eax, ebp
call fcn.1006bda0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
cmp edx, 0x1f
ja 0x1006eba4
mov dword [esp + edx*4 + 0x10c], eax
jmp 0x1006eba4
mov eax, ebp
call fcn.1006bda0
cmp eax, 0x1f
ja 0x1006eba4
mov eax, dword [esp + eax*4 + 0x10c]
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
mov ecx, ebp
mov esi, eax
call fcn.1006bdf0
mov ecx, ebp
mov ebx, eax
call fcn.1006bdf0
cmp esi, edx
jle 0x1006fbd6
mov eax, ebx
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 0x218]
mov eax, dword [edx + 0x288]
mov esi, eax
shl esi, 0xd
mov ecx, eax
xor eax, esi
mov esi, eax
shr esi, 0x11
xor eax, esi
mov esi, eax
and ecx, 0xffff
inc ecx
shl esi, 5
xor esi, eax
push ecx
mov eax, ebp
mov dword [edx + 0x288], esi
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
push edx
push eax
call fcn.10078b70
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 0xc
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
mov ebx, eax
cmp ebx, edi
jle 0x1006fca6
cmp ebx, 0xa
mov edi, ebx
jl 0x1006fc67
sar edi, 1
push edi
push ebx
call fcn.1004c6d0
lea esi, [eax + edi + 1]
sar esi, 1
add esp, 8
cmp esi, edi
je 0x1006fca8
jmp 0x1006fc80
push esi
push ebx
mov edi, esi
call fcn.1004c6d0
lea esi, [eax + esi + 1]
sar esi, 1
add esp, 8
cmp esi, edi
jne 0x1006fc80
push esi
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
xor esi, esi
push esi
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
mov ecx, ebp
call fcn.1006bdf0
mov esi, eax
push esi
jmp 0x1006fcd7
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov edx, eax
call fcn.1006bdf0
mov esi, eax
push edx
mov eax, ebp
call fcn.1006bd60
push esi
mov eax, ebp
call fcn.1006bd60
add esp, 8
jmp 0x1006eba4
mov eax, ebp
call fcn.1006bda0
mov ecx, dword [ebp + 0xc]
sub ecx, dword [ebp + 8]
sar ecx, 3
cmp ecx, edi
jbe 0x1006eba4
test eax, eax
jl 0x1006fd14
cmp eax, ecx
jb 0x1006fd12
xor ecx, ecx
jmp 0x1006fd15
sub ecx, eax
dec ecx
mov edx, ebp
call fcn.1006be50
push eax
mov eax, ebp
call fcn.1006bd60
add esp, 4
jmp 0x1006eba4
mov eax, ebp
call fcn.1006bda0
mov edx, eax
mov eax, ebp
call fcn.1006bda0
push edx
push eax
push ebp
call fcn.1006bf20
add esp, 0xc
jmp 0x1006eba4
test cl, cl
je case.0x1006ec8f.0
cmp byte [esp + 0x1b], 0
je case.0x1006ec8f.0
mov ecx, ebp
call fcn.1006bdf0
mov ecx, ebp
mov dword [esp + 0x3f08], eax
call fcn.1006bdf0
mov edx, dword [esp + 0x14]
mov dword [edx + 0x1d4], edi
mov edx, dword [ebp + 8]
mov dword [esp + 0x3f04], eax
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
test al, al
je case.0x1006ec8f.0
mov ecx, ebp
call fcn.1006bdf0
mov esi, dword [esp + 0x14]
mov ecx, dword [esi + 0x24]
mov dword [ecx], eax
mov eax, dword [esi + 0x24]
mov ecx, ebp
mov dword [eax + 4], edi
call fcn.1006bdf0
mov ecx, dword [esi + 0x20]
add dword [ecx], eax
cmp byte [esi + 0x2f], 0
mov byte [esp + 0x13], 1
jne 0x10070a3b
test dl, dl
je case.0x1006ec8f.0
mov edx, dword [ebp + 8]
add dword [esp + 0x3f04], eax
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
test al, al
je 0x100708d6
test dl, dl
jne 0x100708d6
mov ecx, dword [esp + 0x3f08]
mov edx, dword [esp + 0x3f04]
push ecx
push edx
lea eax, [esp + 0x194]
push eax
call fcn.1006e830
mov esi, dword [esp + 0x54]
mov ecx, dword [esp + 0x70]
xor eax, eax
add esp, 0xc
cmp esi, edi
mov dword [esp + 0x3eb4], eax
mov dword [esp + 0x3eb0], eax
mov byte [esp + 0x1b], 1
mov dword [esp + 0xa8], edi
mov dword [esp + 0xc8], edi
mov dword [esp + 0x3eb8], eax
mov dword [esp + 0x3ebc], eax
mov dword [esp + 0x3ec0], eax
mov dword [esp + 0x3ec4], eax
mov dword [esp + 0x3ec8], eax
mov dword [esp + 0x3eb0], ecx
mov byte [esp + 0x3eb4], al
mov byte [esp + 0x3eb5], 1
jle 0x1006feac
jmp 0x1006fe80
dec esi
mov edx, esi
lea ecx, [esp + 0xec]
call fcn.1006cb60
cmp esi, edi
mov dword [esp + 0x30], eax
jg 0x1006fe80
mov edx, dword [eax + 4]
mov dword [eax + 0xc], edx
mov edx, dword [ebp + 8]
mov dword [esp + 0x48], esi
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov eax, dword [esp + 0x30]
mov edx, dword [eax + 4]
mov dword [eax + 0xc], edx
mov edx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov eax, dword [ebp + 0xc]
sub eax, dword [ebp + 8]
sar eax, 3
cmp eax, 1
jbe 0x1006fedd
cmp byte [esp + 0x3eb4], 0
jne case.0x1006ec8f.0
mov edx, dword [esp + 0x4c]
lea ecx, [esp + 0x13]
push ecx
push edx
lea eax, [esp + 0x9c]
push eax
mov eax, dword [esp + 0x30]
push ebp
xor edx, edx
call fcn.1006e210
mov ecx, dword [esp + 0x24]
add esp, 0x10
cmp byte [ecx + 0x224], 0
jne 0x10070a3b
cmp bl, 0x13
jne 0x1006ff3f
mov edx, dword [esp + 0xc8]
mov eax, dword [esp + 0xa8]
mov edi, dword [esp + 0x30]
add edx, eax
lea ecx, [esp + 0x3eb0]
call fcn.1006e1a0
mov edx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x24]
push ecx
lea edx, [esp + 0x2eec]
push edx
lea eax, [esp + 0x1fd4]
push eax
lea esi, [esp + 0x2fa0]
call fcn.1006ae40
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0xd4]
mov edi, dword [esp + 0x3c]
xor eax, eax
mov dword [esp + 0x3ed8], eax
mov dword [esp + 0x3edc], eax
mov dword [esp + 0x3ee0], eax
mov dword [esp + 0x3ee4], eax
mov dword [esp + 0x3ee8], eax
mov dword [esp + 0x3eec], eax
mov dword [esp + 0x3ef0], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x3ed8], ecx
add edx, eax
lea ecx, [esp + 0x3ed8]
call fcn.1006e1a0
push 0
push 0
lea ecx, [esp + 0x3ee0]
push ecx
lea edx, [esp + 0xac]
push edx
lea eax, [esp + 0xd0]
push eax
mov ecx, esi
push ecx
call fcn.1006da10
mov edx, dword [ebp + 8]
add esp, 0x24
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov edx, dword [ebp + 0xc]
sub edx, dword [ebp + 8]
sar edx, 3
cmp edx, 2
jbe 0x1007001c
cmp byte [esp + 0x13], 0
jne 0x1007001c
xor ecx, ecx
mov edx, ebp
call fcn.1006be50
add eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x4c]
mov dword [ecx], eax
mov edx, dword [esp + 0x14]
cmp byte [edx + 0x224], 0
mov byte [esp + 0x13], 1
jne 0x10070a3b
mov ecx, ebp
call fcn.1006bdf0
add dword [esp + 0x3f08], eax
mov ecx, ebp
call fcn.1006bdf0
add dword [esp + 0x3f04], eax
jmp 0x1006ee5e
mov ecx, dword [ebp + 0xc]
sub ecx, dword [ebp + 8]
sar ecx, 3
cmp ecx, 1
jbe 0x1007007b
cmp byte [esp + 0x13], 0
jne 0x1007007b
xor ecx, ecx
mov edx, ebp
call fcn.1006be50
add eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x4c]
mov dword [edx], eax
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x224], 0
mov byte [esp + 0x13], 1
jne 0x10070a3b
mov ecx, ebp
call fcn.1006bdf0
mov ecx, dword [esp + 0x14]
add dword [esp + 0x3f04], eax
cmp dword [ecx + 0x1d4], edi
jne case.0x1006ec8f.0
mov edx, dword [esp + 0x3f08]
mov eax, dword [esp + 0x3f04]
push edx
push eax
lea ecx, [esp + 0x194]
push ecx
call fcn.1006e830
add esp, 0xc
mov edx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov edi, dword [ebp + 0xc]
sub edi, dword [ebp + 8]
xor esi, esi
sar edi, 3
mov dword [esp + 0x2c], edi
cmp edi, 6
jbe 0x1007013c
lea ebx, [esi + 6]
lea ecx, [ecx]
mov ecx, esi
mov edx, ebp
call fcn.1006be50
add dword [esp + 0x3f04], eax
lea ecx, [ebx - 5]
mov edx, ebp
call fcn.1006be50
mov ecx, dword [esp + 0x3f08]
add ecx, eax
mov eax, dword [esp + 0x3f04]
push ecx
push eax
lea eax, [esp + 0x194]
mov dword [esp + 0x3f10], ecx
call fcn.1006ddc0
add ebx, 2
add esp, 8
add esi, 2
cmp ebx, edi
jb 0x100700f0
cmp esi, edi
jae 0x100701f1
mov ecx, esi
mov edx, ebp
call fcn.1006be50
mov edi, eax
add edi, dword [esp + 0x3f04]
lea ecx, [esi + 1]
mov edx, ebp
call fcn.1006be50
mov ebx, eax
add ebx, dword [esp + 0x3f08]
lea ecx, [esi + 2]
mov edx, ebp
call fcn.1006be50
add eax, edi
lea ecx, [esi + 3]
mov edx, ebp
mov dword [esp + 0x28], eax
call fcn.1006be50
add eax, ebx
lea ecx, [esi + 4]
mov edx, ebp
mov dword [esp + 0x34], eax
call fcn.1006be50
add eax, dword [esp + 0x28]
lea ecx, [esi + 5]
mov edx, ebp
mov dword [esp + 0x3c], eax
call fcn.1006be50
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
add eax, ecx
push eax
push edx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x30]
push ecx
push eax
mov eax, ebx
mov ecx, edi
lea edx, [esp + 0x19c]
call fcn.1006df30
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
add esi, 6
add esp, 0x10
mov dword [esp + 0x3f04], ecx
mov dword [esp + 0x3f08], edx
cmp esi, dword [esp + 0x2c]
jb 0x10070144
mov eax, dword [ebp + 8]
mov dword [ebp + 0xc], eax
jmp 0x1006eba4
mov esi, dword [ebp + 0xc]
sub esi, dword [ebp + 8]
sar esi, 3
mov eax, esi
and eax, 0xfffffffd
sub esi, eax
mov dword [esp + 0x28], eax
cmp esi, eax
jae 0x100702cb
jmp 0x10070220
mov ecx, dword [esp + 0x28]
sub ecx, esi
test cl, 1
je 0x10070242
mov ecx, esi
mov edx, ebp
call fcn.1006be50
add eax, dword [esp + 0x3f04]
inc esi
mov dword [esp + 0x2c], eax
jmp 0x1007024d
mov edx, dword [esp + 0x3f04]
mov dword [esp + 0x2c], edx
mov ecx, esi
mov edx, ebp
call fcn.1006be50
mov ebx, eax
add ebx, dword [esp + 0x3f08]
lea ecx, [esi + 1]
mov edx, ebp
call fcn.1006be50
mov edi, eax
add edi, dword [esp + 0x2c]
lea ecx, [esi + 2]
mov edx, ebp
call fcn.1006be50
add eax, ebx
lea ecx, [esi + 3]
mov edx, ebp
mov dword [esp + 0x34], eax
call fcn.1006be50
mov ecx, dword [esp + 0x34]
add eax, ecx
push eax
push edi
push ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x40], eax
push edi
mov eax, ebx
lea edx, [esp + 0x19c]
call fcn.1006df30
mov eax, dword [esp + 0x44]
add esi, 4
add esp, 0x10
mov dword [esp + 0x3f04], edi
mov dword [esp + 0x3f08], eax
cmp esi, dword [esp + 0x28]
jb 0x10070220
mov ecx, dword [ebp + 8]
mov dword [ebp + 0xc], ecx
jmp 0x1006eba4
mov esi, dword [ebp + 0xc]
sub esi, dword [ebp + 8]
sar esi, 3
mov eax, esi
and eax, 0xfffffffd
sub esi, eax
mov dword [esp + 0x28], eax
cmp esi, eax
jae 0x10070399
mov edx, dword [esp + 0x28]
sub edx, esi
test dl, 1
je 0x10070310
mov ecx, esi
mov edx, ebp
call fcn.1006be50
add eax, dword [esp + 0x3f08]
inc esi
jmp 0x10070317
mov eax, dword [esp + 0x3f08]
mov ecx, esi
mov edx, ebp
mov dword [esp + 0x2c], eax
call fcn.1006be50
mov ebx, eax
add ebx, dword [esp + 0x3f04]
lea ecx, [esi + 1]
mov edx, ebp
call fcn.1006be50
add eax, ebx
lea ecx, [esi + 2]
mov edx, ebp
mov dword [esp + 0x34], eax
call fcn.1006be50
mov edi, eax
add edi, dword [esp + 0x2c]
lea ecx, [esi + 3]
mov edx, ebp
call fcn.1006be50
mov ecx, dword [esp + 0x34]
add eax, ecx
push edi
push eax
push edi
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x38]
push ecx
mov ecx, ebx
lea edx, [esp + 0x19c]
call fcn.1006df30
mov ecx, dword [esp + 0x44]
add esi, 4
add esp, 0x10
mov dword [esp + 0x3f04], ecx
mov dword [esp + 0x3f08], edi
cmp esi, dword [esp + 0x28]
jb 0x100702f2
mov edx, dword [ebp + 8]
mov dword [ebp + 0xc], edx
jmp 0x1006eba4
mov esi, dword [ebp + 0xc]
sub esi, dword [ebp + 8]
sar esi, 3
cmp bl, 0x1f
sete cl
mov eax, esi
and eax, 0xfffffffd
sub esi, eax
mov dword [esp + 0x28], eax
cmp esi, eax
jae 0x10070574
lea eax, [esi + 4]
lea edx, [esi + 3]
mov dword [esp + 0x44], eax
mov dword [esp + 0x60], edx
lea eax, [esi + 2]
lea edx, [esi + 1]
mov dword [esp + 0x58], eax
mov dword [esp + 0x54], edx
jmp 0x100703e8
mov cl, byte [esp + 0x1a]
test cl, cl
mov edx, ebp
mov ecx, esi
je 0x10070490
call fcn.1006be50
mov ecx, dword [esp + 0x54]
mov ebx, eax
add ebx, dword [esp + 0x3f04]
mov eax, dword [esp + 0x3f08]
mov edx, ebp
mov dword [esp + 0x34], ebx
mov dword [esp + 0x3c], eax
call fcn.1006be50
mov ecx, dword [esp + 0x58]
mov edi, eax
mov edx, ebp
add edi, ebx
call fcn.1006be50
mov ecx, dword [esp + 0x60]
mov ebx, eax
add ebx, dword [esp + 0x3f08]
mov edx, ebp
call fcn.1006be50
mov ecx, dword [esp + 0x28]
add eax, ebx
sub ecx, esi
mov dword [esp + 0x2c], eax
cmp ecx, 5
jne 0x10070482
mov ecx, dword [esp + 0x44]
mov edx, ebp
call fcn.1006be50
add eax, edi
mov dword [esp + 0x50], eax
mov eax, 1
add dword [esp + 0x54], eax
add dword [esp + 0x58], eax
add dword [esp + 0x60], eax
add esi, eax
add dword [esp + 0x44], eax
mov byte [esp + 0x1a], 0
jmp 0x1007051a
mov dword [esp + 0x50], edi
mov byte [esp + 0x1a], 0
jmp 0x1007051a
mov ebx, dword [esp + 0x3f04]
mov dword [esp + 0x34], ebx
call fcn.1006be50
add eax, dword [esp + 0x3f08]
mov ecx, dword [esp + 0x54]
mov edx, ebp
mov dword [esp + 0x3c], eax
call fcn.1006be50
mov ecx, dword [esp + 0x58]
mov edi, eax
mov edx, ebp
add edi, ebx
call fcn.1006be50
mov ecx, dword [esp + 0x60]
mov ebx, eax
add ebx, dword [esp + 0x3c]
mov edx, ebp
call fcn.1006be50
mov edx, dword [esp + 0x28]
add eax, edi
sub edx, esi
mov dword [esp + 0x50], eax
cmp edx, 5
jne 0x10070511
mov ecx, dword [esp + 0x44]
mov edx, ebp
call fcn.1006be50
add eax, ebx
mov dword [esp + 0x2c], eax
mov eax, 1
add dword [esp + 0x54], eax
add dword [esp + 0x58], eax
add dword [esp + 0x60], eax
add esi, eax
add dword [esp + 0x44], eax
jmp 0x10070515
mov dword [esp + 0x2c], ebx
mov byte [esp + 0x1a], 1
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x50]
push eax
mov eax, dword [esp + 0x40]
push ecx
mov ecx, dword [esp + 0x3c]
push ebx
push edi
lea edx, [esp + 0x19c]
call fcn.1006df30
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x60]
mov dword [esp + 0x3f18], eax
mov eax, 4
add dword [esp + 0x64], eax
add dword [esp + 0x68], eax
add dword [esp + 0x70], eax
add dword [esp + 0x54], eax
add esi, eax
add esp, 0x10
mov dword [esp + 0x3f04], edx
cmp esi, dword [esp + 0x28]
jb 0x100703e4
mov ecx, dword [ebp + 8]
mov dword [ebp + 0xc], ecx
jmp 0x1006eba4
mov edi, dword [esp + 0x30]
mov eax, edi
call fcn.1006bc80
mov esi, eax
mov eax, edi
call fcn.1006bc80
cwde
shl esi, 8
movsx edx, si
or eax, edx
push eax
mov eax, ebp
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
cmp bl, 0xf6
ja 0x100705c7
add esi, 0xffffff75
push esi
mov eax, ebp
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
cmp bl, 0xfa
ja 0x100705ef
mov eax, dword [esp + 0x30]
call fcn.1006bc80
shl esi, 8
lea esi, [eax + esi - 0xf694]
push esi
mov eax, ebp
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
cmp bl, 0xfe
ja 0x10070619
mov eax, dword [esp + 0x30]
call fcn.1006bc80
shl esi, 8
mov ecx, 0xfa94
sub ecx, esi
sub ecx, eax
push ecx
mov eax, ebp
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
mov edi, dword [esp + 0x30]
mov eax, edi
call fcn.1006bc80
mov esi, eax
mov eax, edi
call fcn.1006bc80
mov ebx, eax
mov eax, edi
call fcn.1006bc80
mov edi, eax
mov eax, dword [esp + 0x30]
call fcn.1006bc80
mov ecx, dword [esp + 0x24]
shl esi, 8
or esi, ebx
shl esi, 8
or esi, edi
shl esi, 8
or eax, esi
cmp byte [ecx + 8], 0
je 0x1006fd1c
cmp eax, 0x7d00
jg 0x1007066c
cmp eax, 0xffff8300
jge 0x10070678
cmp byte [esp + 0x23], 0
jne 0x10070678
mov byte [esp + 0x23], 1
push eax
mov eax, ebp
call fcn.1006bd20
add esp, 4
jmp 0x1006eba4
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x2f], 0
je 0x1007069c
mov eax, 0x12
jmp 0x10070a3f
cmp dword [eax + 0x244], 0
jne 0x100706bb
mov ecx, dword [edx + 0x80]
cmp dword [ecx + 0x34], 0
jne 0x100706bb
mov eax, 0x12
jmp 0x10070a3f
mov eax, dword [eax + 0x20]
mov ecx, dword [edx + 0x80]
add ebx, dword [eax]
cmp dword [ecx + 0x34], 0
je 0x100706d8
mov dword [esp + 0x34], edi
mov eax, esi
mov dword [esp + 0x28], esi
jmp 0x100706f8
mov eax, dword [esp + 0x14]
mov ecx, edi
call fcn.1006a100
mov edi, eax
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x14]
mov ecx, esi
call fcn.1006a100
mov dword [esp + 0x28], eax
test edi, edi
jl 0x1006f3d7
test eax, eax
jl 0x1006f3d7
mov edx, dword [esp + 0x14]
cmp byte [edx + 0x2e], 0
mov eax, edx
je 0x100707b9
mov edi, dword [eax + 8]
mov ecx, dword [edi + 0x9c]
mov eax, dword [ecx]
push 2
push eax
mov dword [esp + 0x70], eax
call fcn.100529a0
add esp, 8
test eax, eax
je 0x1007073f
mov dword [esp + 0x1c], eax
jmp 0x10070a3b
mov edx, dword [esp + 0x68]
mov esi, dword [edx + 0x58]
mov eax, dword [esp + 0x34]
sub ebx, dword [esp + 0x3c]
mov edx, dword [esp + 0x28]
mov dword [esi], eax
xor eax, eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
mov ecx, 0x202
mov word [esi + 4], cx
add esi, 0x20
mov eax, 2
push ebx
mov dword [esi], edx
mov word [esi + 4], ax
call fcn.1004c4f0
mov ecx, dword [esp + 0x74]
sar eax, 0x10
push ecx
mov dword [esi + 8], eax
call fcn.1004c4f0
add esp, 8
sar eax, 0x10
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x68]
mov ecx, 2
mov dword [edi + 0x80], ecx
mov edx, dword [eax + 0x34]
mov dword [edi + 0x84], edx
mov dword [edi + 0x48], 0x636f6d70
mov dword [eax + 0x54], ecx
jmp 0x10070a3b
mov ecx, dword [eax + 0xc]
push ecx
call fcn.1004ccf0
mov ecx, dword [esp + 0x18]
add esp, 4
lea esi, [esp + 0x84]
mov eax, edi
call fcn.1006acf0
test eax, eax
jne 0x10070a3f
mov edi, dword [esp + 0x80]
lea edx, [esp + 0x74]
push edx
mov edx, dword [esp + 0x28]
push eax
push eax
mov eax, dword [esp + 0x84]
push 1
push eax
push edi
mov ecx, esi
push ecx
push edx
call fcn.1006e8c0
mov edx, esi
mov esi, dword [esp + 0x34]
add esp, 0x20
mov eax, esi
call fcn.1006ad70
mov eax, dword [esi + 0x20]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x34], ecx
mov ecx, dword [esi + 0x24]
mov dword [esp + 0x38], edx
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [eax], 0
mov eax, dword [esp + 0x28]
mov dword [esp + 0x68], edx
mov edx, dword [esi + 0x20]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x14]
lea esi, [esp + 0x84]
mov dword [edx + 4], 0
call fcn.1006acf0
test eax, eax
je 0x10070866
mov dword [esp + 0x1c], eax
jmp 0x10070a3b
mov ecx, dword [esp + 0x70]
sub ebx, dword [esp + 0x3c]
mov edx, dword [esp + 0x78]
lea eax, [esp + 0x74]
push eax
push ecx
mov ecx, dword [esp + 0x2c]
push ebx
push 1
push edx
push edi
lea eax, [esp + 0x9c]
push eax
push ecx
call fcn.1006e8c0
mov esi, dword [esp + 0x34]
add esp, 0x20
lea edx, [esp + 0x84]
mov eax, esi
call fcn.1006ad70
mov eax, dword [esi + 0x20]
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
mov dword [eax], edx
mov edx, dword [esp + 0x68]
mov dword [eax + 4], ecx
mov eax, dword [esi + 0x24]
mov ecx, dword [esp + 0x6c]
mov dword [eax], edx
mov dword [eax + 4], ecx
jmp 0x10070a3b
mov dword [esp + 0x1c], 0x12
jmp 0x10070a3b
mov eax, dword [ebp + 0xc]
sub eax, dword [ebp + 8]
sar eax, 3
cmp eax, 1
je 0x100708e9
cmp eax, 5
jne 0x10070903
cmp byte [esp + 0x13], 0
jne 0x10070903
xor ecx, ecx
mov edx, ebp
call fcn.1006be50
add eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x4c]
mov dword [edx], eax
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x224], 0
jne 0x10070a3b
lea esi, [esp + 0x18c]
call fcn.1006e120
mov ecx, dword [esp + 0x24]
cmp byte [ecx + 9], 0
jne 0x10070a3b
mov edx, ecx
cmp byte [edx + 8], 0
jne 0x10070a3b
mov eax, dword [ebp + 0xc]
sub eax, dword [ebp + 8]
sar eax, 3
cmp eax, 1
jbe 0x10070a3b
cmp byte [esp + 0x3f00], 0
je 0x10070960
mov eax, 0x12
jmp 0x10070a3f
mov eax, ebp
call fcn.1006bda0
mov edx, eax
mov eax, ebp
call fcn.1006bda0
mov ecx, ebp
mov dword [esp + 0x34], eax
call fcn.1006bdf0
mov ecx, ebp
mov ebx, eax
call fcn.1006bdf0
mov edi, dword [esp + 0x14]
lea esi, [esp + 0x84]
mov ecx, edx
mov dword [esp + 0x3f04], eax
call fcn.1006ac60
test eax, eax
je 0x100709aa
mov dword [esp + 0x1c], eax
jmp 0x10070a3b
mov edx, dword [esp + 0x3f04]
mov eax, dword [esp + 0x78]
lea ecx, [esp + 0x68]
push ecx
mov ecx, dword [esp + 0x84]
push ebx
mov ebx, dword [esp + 0x2c]
push edx
push 1
push eax
push ecx
lea edx, [esp + 0x9c]
push edx
push ebx
call fcn.1006e8c0
add esp, 0x20
lea ecx, [esp + 0x84]
mov edx, edi
call fcn.1006acd0
mov ecx, dword [esp + 0x34]
lea esi, [esp + 0x84]
call fcn.1006ac60
test eax, eax
je 0x10070a04
mov dword [esp + 0x1c], eax
jmp 0x10070a3b
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x80]
lea eax, [esp + 0x68]
push eax
push 0
push 0
push 1
push ecx
push edx
lea eax, [esp + 0x9c]
push eax
push ebx
call fcn.1006e8c0
add esp, 0x20
lea ecx, [esp + 0x84]
mov edx, edi
call fcn.1006acd0
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x64]
xor edi, edi
cmp ecx, edi
je 0x10070a4f
cmp dword [ecx], edi
jne 0x10070a4f
mov dword [ecx], eax
mov ecx, dword [esp + 0x2f04]
mov edx, dword [esp + 0x2ee8]
push ecx
push edx
mov dword [esp + 0x2efc], edi
mov dword [esp + 0x2f04], edi
mov dword [esp + 0x2f08], edi
call fcn.1004f1e0
mov eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x9c]
push eax
push ecx
mov dword [esp + 0x2f14], edi
mov dword [esp + 0xb0], edi
mov dword [esp + 0xb8], edi
mov dword [esp + 0xbc], edi
call fcn.1004f1e0
mov edx, dword [esp + 0xe0]
mov eax, dword [esp + 0xc4]
push edx
push eax
mov dword [esp + 0xc8], edi
mov dword [esp + 0xd8], edi
mov dword [esp + 0xe0], edi
mov dword [esp + 0xe4], edi
call fcn.1004f1e0
mov ecx, dword [esp + 0x120]
mov edx, dword [esp + 0x104]
push ecx
push edx
mov dword [esp + 0xf0], edi
call fcn.1004f1e0
add esp, 0x20
cmp ebp, edi
je 0x10070b18
mov eax, dword [ebp + 8]
mov esi, dword [ebp]
push eax
push esi
call fcn.1004f1e0
push ebp
push esi
mov dword [ebp + 8], edi
call fcn.1004f1e0
add esp, 0x10
mov ecx, dword [esp + 0x3ee8]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.101044ca
add esp, 0x3edc
ret