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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xfc
mov eax, dword [0x101e3070]
xor eax, esp
mov dword [esp + 0xf8], eax
push ebx
push esi
mov esi, edx
mov edx, ecx
push edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x4c], edx
mov edi, dword [edx]
lea eax, [edx + 0x148]
mov dword [esp + 0x64], eax
mov dword [esp + 0x60], edi
mov eax, dword [edi]
mov dword [esp + 0x6c], eax
lea eax, [esi + esi*4]
shl eax, 4
lea esi, [edx + 0x2e0]
add esi, eax
mov ebx, dword [edi + 8]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x24], esi
mov eax, dword [esi + 0x40]
mov dword [esp + 0x48], eax
movzx eax, byte [esi + 0x2c]
lea ecx, [eax + eax*4]
mov eax, dword [edx + 4]
mov edx, dword [edx + 0x44]
add eax, 8
shl ecx, 4
add eax, ecx
mov dword [esp + 0x20], eax
mov eax, dword [eax + 0x30]
mov dword [esp + 0x34], eax
xor eax, eax
test edx, edx
jle 0x1007e2f8
mov ecx, dword [esp + 0x4c]
add ecx, 0x48
nop dword [eax]
mov edi, dword [esp + 0x34]
cmp dword [ecx], edi
mov edi, dword [esp + 0x60]
je 0x1007e486
inc eax
add ecx, 4
cmp eax, edx
jl 0x1007e2e0
xorps xmm0, xmm0
movlpd qword [esp + 0x80], xmm0
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 0x80]
not ecx
not edx
and ecx, dword [ebp + 8]
and edx, dword [ebp + 0xc]
mov dword [esi + 0x48], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esi + 0x4c], edx
mov eax, dword [ecx + 0x18]
mov edx, dword [ecx + 0x1c]
mov ecx, dword [esp + 0x18]
call fcn.1017a6c0
and eax, 1
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x48]
test byte [eax + 0x24], 0x40
je 0x1007e358
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x3c], 1
test byte [eax + 0x22], 0x20
je 0x1007e360
mov dword [esp + 0x3c], 0
mov edx, dword [ebx + 0x18]
mov dword [esp + 0x30], edx
mov ecx, dword [edx + 0x70]
mov dword [esp + 0x10], ecx
lea eax, [ecx + 1]
mov dword [edx + 0x70], eax
lea eax, [ecx - 1]
test ecx, eax
jne 0x1007e3a1
mov edx, dword [edx + 0x74]
lea eax, [ecx*8 + 4]
mov ecx, dword [esp + 0x30]
push 0
push eax
mov ecx, dword [ecx]
call fcn.1001c060
mov edx, dword [esp + 0x38]
add esp, 8
mov ecx, dword [esp + 0x10]
mov dword [edx + 0x74], eax
mov eax, dword [edx + 0x74]
test eax, eax
je 0x1007e3af
mov dword [eax + ecx*4], 0xffffffff
not ecx
mov dword [esi + 0x10], ecx
mov dword [esi + 0xc], ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x14], ecx
mov edx, dword [ecx + 0x70]
mov dword [esp + 0x7c], edx
lea eax, [edx + 1]
mov dword [ecx + 0x70], eax
lea eax, [edx - 1]
test edx, eax
jne 0x1007e3f8
lea eax, [edx*8 + 4]
mov edx, dword [ecx + 0x74]
mov ecx, dword [ecx]
push 0
push eax
call fcn.1001c060
mov ecx, dword [esp + 0x1c]
add esp, 8
mov edx, dword [esp + 0x7c]
mov dword [ecx + 0x74], eax
mov eax, dword [ecx + 0x74]
test eax, eax
je 0x1007e406
mov dword [eax + edx*4], 0xffffffff
cmp byte [esi + 0x2c], 0
not edx
mov eax, dword [esp + 0x20]
mov dword [esp + 0x7c], edx
mov dword [esi + 0x18], edx
jbe 0x1007e43e
test byte [eax + 0x24], 8
je 0x1007e43e
mov eax, dword [edi + 0x48]
mov edx, 0x17
inc eax
mov ecx, ebx
push eax
mov dword [edi + 0x48], eax
push 0
mov dword [esi], eax
call fcn.10038f70
mov eax, dword [esp + 0x28]
add esp, 8
mov ecx, dword [eax + 0x28]
mov dword [esp + 0x80], ecx
test cl, 0x10
je 0x1007e54f
mov edx, dword [eax + 0x1c]
mov eax, dword [eax + 0x18]
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x30], edx
cmp dword [eax + 0x54], ecx
jg 0x1007e4a0
push dword [esp + 0x18]
mov ecx, ebx
push 0
push edx
mov edx, 0x11
call fcn.10038de0
mov edx, dword [esp + 0x3c]
add esp, 0xc
jmp 0x1007e4d3
xor ecx, ecx
xor edx, edx
bts ecx, eax
cmp eax, 0x20
cmovae edx, ecx
xor ecx, edx
cmp eax, 0x40
cmovae edx, ecx
jmp 0x1007e312
mov edi, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov word [eax + ecx*4], 0x11
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x14], ecx
cmp dword [eax + 0x54], ecx
jg 0x1007e50a
mov edx, dword [esp + 0x10]
mov ecx, ebx
push 0
push edx
push dword [esp + 0x38]
mov edx, 0x14
call fcn.10038de0
mov dword [esi + 0x34], eax
add esp, 0xc
mov byte [esi + 0x2d], 0xe
mov eax, esi
jmp 0x1007e812
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x10]
mov word [eax + ecx*4], 0x14
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x14]
mov dword [esi + 0x34], eax
mov eax, esi
mov byte [esi + 0x2d], 0xe
jmp 0x1007e812
mov edx, dword [esp + 0x48]
mov eax, dword [edx + 0x24]
test eax, 0x400
je 0x1007e86f
movzx ecx, word [edx + 0x28]
mov ebx, dword [edi + 0x38]
inc dword [edi + 0x68]
mov dword [esp + 0xc], ecx
lea eax, [ecx + 2]
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x3c]
cmp dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x10], eax
jg 0x1007e59b
add eax, 2
add eax, ecx
mov dword [edi + 0x3c], eax
mov eax, dword [edi + 0x38]
sub eax, dword [esp + 0x20]
mov dword [edi + 0x38], eax
jmp 0x1007e5b1
mov eax, dword [edi + 0x48]
lea ebx, [eax + 1]
mov dword [esp + 0x10], ebx
lea ebx, [ecx + 2]
add eax, ebx
mov ebx, dword [esp + 0x5c]
mov dword [edi + 0x48], eax
mov eax, dword [esi + 0xc]
mov dword [esp + 0x44], eax
test ecx, ecx
jle 0x1007e620
mov eax, dword [esp + 0x10]
add eax, 2
xor ebx, ebx
mov dword [esp + 0x18], eax
nop dword [eax]
mov eax, dword [edx + 0x30]
mov ecx, dword [eax + ebx*4]
test ecx, ecx
je 0x1007e615
mov eax, dword [esp + 0x18]
add eax, ebx
test byte [ecx + 0x12], 1
push eax
je 0x1007e602
push dword [esp + 0x3c]
mov edx, ecx
mov ecx, edi
push ebx
push esi
call fcn.1007dc10
mov eax, dword [esi + 0x10]
add esp, 0x10
mov dword [esp + 0x44], eax
jmp 0x1007e611
mov edx, dword [ecx]
mov ecx, edi
mov edx, dword [edx + 0x10]
call fcn.100516c0
add esp, 4
mov edx, dword [esp + 0x48]
inc ebx
cmp ebx, dword [esp + 0xc]
jl 0x1007e5d0
mov ebx, dword [esp + 0x5c]
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
mov edx, dword [edx + 0x18]
cmp dword [eax + 0x54], ecx
jg 0x1007e646
push 0
push dword [esp + 0x14]
mov ecx, ebx
push edx
mov edx, 0x17
call fcn.10038de0
add esp, 0xc
jmp 0x1007e679
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x10]
mov word [eax + ecx*4], 0x17
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [ebx + 0x18]
mov edx, dword [esp + 0x10]
mov ecx, dword [ebx + 0x20]
inc edx
mov dword [esp + 0x14], edx
cmp dword [eax + 0x54], ecx
jg 0x1007e6a5
push 0
push edx
push dword [esp + 0x14]
mov edx, 0x17
mov ecx, ebx
call fcn.10038de0
add esp, 0xc
jmp 0x1007e6dc
mov edx, dword [esp + 0xc]
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x14]
mov word [eax + ecx*4], 0x17
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x48]
mov ecx, 0xfffffffe
mov edx, 0xfffffff5
cmp byte [eax + 0x1c], 0
mov eax, dword [eax + 0x20]
cmovne ecx, edx
mov dword [esp + 0x3c], eax
mov eax, dword [ebx + 0x18]
mov dword [esp + 0x78], ecx
mov ecx, dword [ebx + 0x20]
mov dword [esp + 0x14], ecx
cmp dword [eax + 0x54], ecx
jg 0x1007e729
push dword [esp + 0x10]
mov edx, dword [esp + 0x48]
mov ecx, ebx
push edx
push dword [esp + 0x3c]
mov edx, 0xc
call fcn.10038de0
add esp, 0xc
jmp 0x1007e764
mov edx, dword [esp + 0x34]
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x44]
mov dword [eax + ecx*4 + 8], edx
mov edx, dword [esp + 0x10]
mov word [eax + ecx*4], 0xc
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 0xc], edx
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x14]
push dword [esp + 0x78]
mov edx, eax
mov ecx, ebx
push dword [esp + 0x40]
call fcn.10039ac0
mov eax, dword [esp + 0x50]
add esp, 8
cmp dword [esp + 0xc], 0
mov byte [eax + 0x1c], 0
jle 0x1007e7bf
xor edi, edi
mov ebx, eax
nop dword [eax + eax]
cmp edi, 0x10
jge 0x1007e7b7
mov ax, word [ebx + 0x1e]
mov cx, di
shr ax, cl
test al, 1
je 0x1007e7b0
mov edx, dword [ebx + 0x30]
mov ecx, esi
mov edx, dword [edx + edi*4]
call fcn.1007db20
inc edi
cmp edi, dword [esp + 0xc]
jl 0x1007e790
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x4c]
mov edx, 0xa1
mov eax, dword [esp + 0x34]
push dword [esp + 0x20]
mov dword [esi + 0x30], eax
mov eax, 0x9b
cmp byte [ecx + 0x26], 0
mov ecx, edi
cmovne eax, edx
mov byte [esi + 0x2d], al
mov eax, dword [ebx + 0x20]
mov dword [esi + 0x34], eax
mov esi, dword [esp + 0x14]
mov edx, esi
call fcn.1004ff70
mov eax, dword [esp + 0x24]
add esp, 4
cmp eax, dword [edi + 0x38]
jle 0x1007e807
mov dword [edi + 0x38], eax
mov dword [edi + 0x3c], esi
mov ecx, edi
call fcn.1004ffd0
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x64]
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x14]
mov dword [esp + 0x78], edx
mov dword [esp + 0x14], ecx
test ecx, ecx
jle 0x1007fa54
nop dword [eax]
movzx ecx, word [edx + 0x14]
xor esi, esi
mov dword [esp + 0x80], ecx
test cl, 6
jne 0x1007fa38
mov edi, dword [esp + 0x24]
mov ecx, dword [edx + 0x28]
and ecx, dword [eax + 0x48]
mov eax, dword [edx + 0x2c]
and eax, dword [edi + 0x4c]
or ecx, eax
mov edi, dword [esp + 0x60]
je 0x1007f95b
mov eax, dword [esp + 0x4c]
mov byte [eax + 0x27], 1
jmp 0x1007fa34
test al, 5
setne cl
bt eax, 8
setb al
test al, cl
je 0x1007e914
mov eax, dword [edx + 0x30]
mov ecx, edi
mov edx, dword [eax]
inc dword [edi + 0x48]
mov eax, dword [edi + 0x48]
push eax
push dword [esp + 0x3c]
mov dword [esp + 0x1c], eax
push 0
push esi
call fcn.1007dc10
mov edx, dword [esp + 0x24]
add esp, 0x10
mov dword [esp + 0x44], eax
cmp eax, edx
je 0x1007e8bb
mov ecx, edi
call fcn.10052c50
mov eax, dword [esp + 0x44]
mov esi, dword [esi + 0x10]
mov edx, 0x27
push esi
push eax
mov ecx, ebx
call fcn.10038f70
push dword [esp + 0x4c]
mov edx, 0x4a
mov ecx, ebx
push esi
push dword [esp + 0x44]
call fcn.10038e20
mov esi, dword [esp + 0x58]
add esp, 0x14
mov edx, esi
mov ecx, edi
push 1
call fcn.1004ff70
mov edx, dword [esp + 0x38]
add esp, 4
mov ecx, edi
push esi
push 0xffffffffffffffff
call fcn.1004fe30
mov eax, dword [esp + 0x2c]
add esp, 8
mov byte [eax + 0x2d], 0xa1
jmp 0x1007e812
mov ecx, dword [edx + 0x24]
mov eax, ecx
and eax, 0x102
cmp eax, 0x102
jne 0x1007eaf8
xor eax, eax
mov dword [esp + 0x2c], 0xa1
mov dword [esp + 0x30], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], eax
mov dword [esp + 0xc], eax
test cl, 0x20
je 0x1007e961
mov eax, dword [edx + 0x30]
mov dword [esp + 0x18], 1
mov eax, dword [eax]
mov dword [esp + 0xc], eax
test cl, 0x10
je 0x1007e976
mov eax, dword [edx + 0x30]
mov ecx, dword [esp + 0x18]
mov ecx, dword [eax + ecx*4]
mov dword [esp + 0x1c], ecx
jmp 0x1007e978
xor ecx, ecx
mov eax, dword [esp + 0x38]
test eax, eax
je 0x1007e992
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0xc], ecx
jmp 0x1007e996
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x1007ea02
mov esi, dword [ecx]
lea eax, [esp + 0x14]
push eax
mov ecx, edi
mov dword [esp + 0x24], 0x42404143
mov edx, dword [esi + 0x10]
call fcn.10051530
mov edx, dword [esp + 0x14]
add esp, 4
mov edi, eax
mov ecx, ebx
movzx eax, byte [esi]
push edi
push edx
push dword [esp + 0x3c]
movzx edx, byte [esp + eax - 0x24]
call fcn.10038e20
add esp, 0xc
mov edx, edi
mov edi, dword [esp + 0x60]
mov ecx, edi
push 1
call fcn.1004ff70
mov edx, dword [esp + 0x18]
add esp, 4
mov ecx, edi
call fcn.10052c50
mov esi, dword [esp + 0x24]
mov ecx, esi
mov edx, dword [esp + 0xc]
call fcn.1007db20
jmp 0x1007ea24
mov edx, dword [esp + 0x10]
test eax, eax
push edx
push dword [esp + 0x38]
mov ecx, 0x6b
mov edx, 0x6e
cmovne edx, ecx
mov ecx, ebx
call fcn.10038f70
add esp, 8
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x1007ea89
mov esi, dword [eax]
mov ecx, edi
inc dword [edi + 0x48]
mov eax, dword [edi + 0x48]
push eax
mov edx, dword [esi + 0x10]
mov dword [esp + 0x34], eax
call fcn.100516c0
mov al, byte [esi]
add esp, 4
cmp al, 0x52
je 0x1007ea64
cmp al, 0x50
je 0x1007ea64
mov ecx, dword [esp + 0x38]
xor eax, eax
test ecx, ecx
setne al
lea eax, [eax*2 + 0x50]
jmp 0x1007ea76
mov ecx, dword [esp + 0x38]
xor eax, eax
test ecx, ecx
sete al
lea eax, [eax*2 + 0x51]
mov esi, dword [esp + 0x24]
mov ecx, esi
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x2c], eax
call fcn.1007db20
cmp dword [esp + 0x38], 0
mov ecx, dword [ebx + 0x20]
sete al
mov dword [esi + 0x34], ecx
add al, 7
cmp dword [esp + 0x2c], 0xa1
mov byte [esi + 0x2d], al
mov eax, dword [esp + 0x34]
mov dword [esi + 0x30], eax
je 0x1007e80e
inc dword [edi + 0x48]
mov edx, 0x69
mov esi, dword [edi + 0x48]
mov ecx, ebx
push esi
push eax
call fcn.10038f70
mov edx, dword [esp + 0x3c]
mov ecx, edi
push esi
push 0xffffffffffffffff
call fcn.1004fe30
mov edx, dword [esp + 0x3c]
mov ecx, ebx
push esi
push dword [esp + 0x24]
push dword [esp + 0x48]
call fcn.10038e20
add esp, 0x1c
mov dl, 0x53
mov ecx, ebx
call fcn.10039720
jmp 0x1007e80e
test ecx, 0x200
je 0x1007f105
mov ecx, dword [esi + 8]
movzx eax, word [edx + 0x18]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x28], eax
mov eax, dword [edx + 0x1c]
mov dword [esp + 0x1c], 0
test byte [ecx + 0x22], 1
mov dword [esp + 0xc], 0
mov dword [esp + 0x2c], 0
mov byte [esp + 0x9f], 0
mov byte [esp + 0x50], 0
mov byte [esp + 0x57], 0
mov dword [esp + 0x20], eax
je 0x1007eb6b
cmp byte [ecx + 0x24], 0
jle 0x1007eb6b
mov ecx, dword [esp + 0x28]
cmp word [eax + 0x32], cx
jbe 0x1007eb6b
mov byte [esp + 0x50], 1
mov dword [esp + 0x2c], 1
mov eax, dword [esp + 0x28]
movzx ecx, ax
mov eax, dword [edx + 0x24]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x18], ecx
test al, 0x20
je 0x1007eb9d
mov eax, dword [edx + 0x30]
mov dword [esp + 0x2c], 1
mov eax, dword [eax + ecx*4]
mov dword [esp + 0x1c], eax
lea eax, [ecx + 1]
mov dword [esp + 0x18], eax
mov eax, dword [edx + 0x24]
test al, 0x10
je 0x1007ec3f
mov eax, dword [edx + 0x30]
mov edx, dword [esp + 0x18]
mov dword [esp + 0x2c], 1
mov eax, dword [eax + edx*4]
mov edx, 0x100
mov dword [esp + 0xc], eax
test word [eax + 0x14], dx
je 0x1007ec03
mov eax, dword [edi + 0x48]
xor ecx, ecx
mov edx, dword [esp + 0x40]
inc eax
mov dword [edi + 0x48], eax
mov dword [esi + 0x24], eax
push eax
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x1c]
cmp byte [edx + eax], 1
mov edx, 0x17
sete cl
xor ecx, dword [esp + 0x3c]
push ecx
mov ecx, ebx
call fcn.10038f70
mov eax, dword [ebx + 0x20]
add esp, 8
mov ecx, dword [esp + 0x40]
mov dword [esi + 0x28], eax
cmp dword [esp + 0x1c], 0
jne 0x1007ec3f
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 4]
movsx eax, word [eax + ecx*2]
test eax, eax
js 0x1007ec3f
lea ecx, [eax + eax*2]
mov dword [esp + 0x14], 1
mov eax, dword [edx + 0xc]
mov edx, dword [esp + 0x50]
movzx edx, dl
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0x14], 0
cmove edx, dword [esp + 0x14]
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
movzx ecx, word [eax + 0x32]
mov dword [esp + 0x14], ecx
cmp dx, cx
jae 0x1007ec6d
mov eax, dword [eax + 0x1c]
xor ecx, ecx
mov edx, dword [esp + 0x40]
cmp byte [edx + eax], cl
sete cl
cmp dword [esp + 0x38], ecx
je 0x1007ec7e
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x1007ec9f
cmp word [esp + 0x14], dx
jne 0x1007ec9f
jmp 0x1007ec82
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov al, byte [esp + 0x50]
mov dword [esp + 0xc], edx
mov byte [esp + 0x57], al
mov byte [esp + 0x50], 0
lea eax, [esp + 0x58]
mov edx, esi
push eax
push dword [esp + 0x30]
push ecx
mov ecx, edi
call fcn.1007ddd0
mov ecx, dword [esp + 0x4c]
add esp, 0xc
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x58]
test eax, eax
je 0x1007eccf
mov al, byte [ecx + eax]
mov byte [esp + 0x9f], al
mov eax, dword [esi + 0x10]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x1007ecec
test byte [eax + 0x12], 0x28
mov dword [esp + 0x30], 0
je 0x1007ecf4
mov dword [esp + 0x30], 1
mov edx, dword [esp + 0xc]
test edx, edx
je 0x1007ed0a
test byte [edx + 0x12], 0x28
mov dword [esp + 0x18], 0
je 0x1007ed12
mov dword [esp + 0x18], 1
test eax, eax
jne 0x1007ee70
cmp word [esp + 0x28], ax
ja 0x1007ee70
mov dword [esp + 0x74], eax
mov dword [esp + 0x28], ecx
cmp byte [esp + 0x50], 0
je 0x1007ed60
mov eax, dword [esp + 0x2c]
mov edx, 0x1a
add eax, ecx
mov ecx, ebx
push eax
push 0
call fcn.10038f70
add esp, 8
mov dword [esp + 0x30], 0
mov dword [esp + 0x74], 1
inc dword [esp + 0x28]
mov ecx, dword [esp + 0x50]
push dword [esp + 0x58]
mov edx, dword [esp + 0x30]
movzx eax, cl
mov ecx, dword [esp + 0x2c]
sub ecx, eax
push ecx
mov ecx, edi
call fcn.1007dba0
mov ecx, dword [esp + 0x38]
push dword [esp + 0x30]
mov eax, dword [esp + 0x80]
push dword [esp + 0x38]
push dword [esp + 0x78]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x4c]
push dword [esp + 0x24]
movzx edx, byte [ecx + eax*2 + 0x101d0008]
mov ecx, ebx
call fcn.10039350
mov eax, dword [esp + 0x24]
add esp, 0x18
test eax, eax
je 0x1007ef1f
mov eax, dword [eax]
mov ecx, edi
push 1
mov eax, dword [eax + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x44]
add eax, dword [esp + 0x30]
mov edx, eax
mov dword [esp + 0x34], eax
call fcn.1004ff70
mov edx, dword [esp + 0x2c]
add esp, 4
mov ecx, edi
push dword [esp + 0x30]
call fcn.100516c0
add esp, 4
mov edx, esi
mov ecx, ebx
push dword [esp + 0xc]
call fcn.1007e200
mov ecx, dword [esp + 0x2c]
add esp, 4
call fcn.1004e860
test eax, eax
je 0x1007ee26
push dword [esp + 0x68]
mov edx, 0x4c
mov ecx, ebx
push dword [esp + 0x34]
call fcn.10038f70
add esp, 8
mov dl, byte [esp + 0x9f]
mov ecx, dword [esp + 0x28]
call fcn.1004ca10
cmp al, 0x41
je 0x1007ef48
mov dl, byte [esp + 0x9f]
mov ecx, dword [esp + 0x28]
call fcn.1004e910
test eax, eax
jne 0x1007ef48
mov edx, dword [esp + 0x30]
lea eax, [esp + 0x9f]
push eax
push 1
mov ecx, edi
call fcn.1007dba0
jmp 0x1007ef45
mov dword [esp + 0x74], 1
mov dword [esp + 0x28], ecx
test eax, eax
je 0x1007ed2d
mov eax, dword [eax]
add ecx, dword [esp + 0x2c]
mov dword [esp + 0x14], ecx
push ecx
mov eax, dword [eax + 0x10]
mov ecx, edi
mov edx, eax
mov dword [esp + 0x48], eax
call fcn.100516c0
add esp, 4
mov edx, esi
mov ecx, ebx
push dword [esp + 0x1c]
call fcn.1007e200
mov ecx, dword [esp + 0x48]
add esp, 4
call fcn.1004e860
test eax, eax
je 0x1007eed6
push dword [esp + 0x68]
mov edx, 0x4c
mov ecx, ebx
push dword [esp + 0x18]
call fcn.10038f70
add esp, 8
mov eax, dword [esp + 0x58]
test eax, eax
je 0x1007ed5c
add eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x70], eax
mov dl, byte [eax]
call fcn.1004ca10
cmp al, 0x41
mov eax, dword [esp + 0x70]
jne 0x1007ef00
mov byte [eax], 0x41
mov dl, byte [eax]
mov ecx, dword [esp + 0x44]
call fcn.1004e910
test eax, eax
je 0x1007ed5c
mov eax, dword [esp + 0x70]
mov byte [eax], 0x41
jmp 0x1007ed5c
cmp byte [esp + 0x57], 0
je 0x1007ef4c
mov eax, dword [esp + 0x40]
mov edx, 0x1a
add eax, dword [esp + 0x2c]
mov ecx, ebx
push eax
push 0
call fcn.10038f70
mov dword [esp + 0x20], 0
add esp, 8
inc dword [esp + 0x40]
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x6c]
call fcn.1001bca0
mov eax, dword [ebx + 0x20]
mov dword [esi + 0x34], eax
mov eax, dword [esp + 0x40]
test eax, eax
je 0x1007ef8e
mov ecx, dword [esp + 0x18]
push eax
push dword [esp + 0x30]
mov eax, dword [esp + 0x40]
push dword [esp + 0x70]
push dword [esp + 0x1c]
movzx edx, byte [ecx + eax*2 + 0x101d009c]
mov ecx, ebx
call fcn.10039350
add esp, 0x10
mov edx, dword [esp + 0x1c]
mov ecx, esi
call fcn.1007db20
mov edx, dword [esp + 0xc]
mov ecx, esi
call fcn.1007db20
cmp dword [esp + 0x3c], 0
jne 0x1007f0bf
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0xc]
test byte [ecx + 0x2a], 0x20
jne 0x1007f029
inc dword [edi + 0x48]
mov edx, 0x72
mov eax, dword [edi + 0x48]
mov ecx, ebx
push eax
push dword [esp + 0x14]
mov dword [esp + 0x20], eax
call fcn.10038f70
push dword [esp + 0x20]
mov edx, dword [esp + 0x40]
mov ecx, edi
push 0xffffffffffffffff
call fcn.1004fe30
mov eax, dword [esp + 0x5c]
add esp, 0x10
mov ecx, ebx
cmp byte [eax + 0x26], 0
push dword [esp + 0x18]
je 0x1007f013
push 0
push dword [esp + 0x3c]
mov edx, 0x4a
call fcn.10038e20
add esp, 0xc
jmp 0x1007f0bf
push dword [esp + 0x38]
mov edx, 0x44
call fcn.10038f70
add esp, 8
jmp 0x1007f0bf
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x34], edx
je 0x1007f0c3
call fcn.10057c20
mov ecx, edi
mov dword [esp + 0x18], eax
movzx edx, word [eax + 0x32]
call fcn.10052c90
mov ecx, eax
xor edx, edx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x3c], ecx
cmp dx, word [eax + 0x32]
jae 0x1007f09f
xor esi, esi
mov edi, eax
lea eax, [esi + ecx]
mov ecx, dword [esp + 0x20]
push eax
mov eax, dword [edi + 4]
mov dx, word [eax + esi*2]
call fcn.10057c40
cwde
mov edx, 0x30
push eax
push dword [esp + 0x18]
mov ecx, ebx
call fcn.10038e20
movzx eax, word [edi + 0x32]
inc esi
mov ecx, dword [esp + 0x48]
add esp, 0xc
cmp esi, eax
jl 0x1007f061
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x18]
movzx eax, word [eax + 0x32]
mov edx, 0x46
push eax
push ecx
push dword [esp + 0x84]
mov ecx, ebx
push dword [esp + 0x40]
call fcn.10039350
add esp, 0x10
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x48]
test dword [ecx + 0x24], 0x1000
je 0x1007f0d6
mov byte [esi + 0x2d], 0xa1
jmp 0x1007f0e3
cmp dword [esp + 0x38], 0
sete al
add al, 7
mov byte [esi + 0x2d], al
mov dword [esi + 0x30], edx
mov al, byte [ecx + 0x26]
and al, 1
mov byte [esi + 0x2e], al
test byte [ecx + 0x24], 0xf
mov eax, dword [esp + 0x24]
jne 0x1007e812
mov byte [esi + 0x2f], 1
jmp 0x1007e812
test ecx, 0x2000
je 0x1007f90d
mov eax, dword [edi + 0x44]
mov ecx, ebx
inc dword [edi + 0x48]
mov dword [esp + 0x78], eax
inc eax
mov dword [edi + 0x44], eax
mov eax, dword [edi + 0x48]
mov dword [esp + 0x38], 0
mov dword [esp + 0x50], eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x68], 0
call fcn.10039420
mov ecx, dword [esp + 0x20]
xor edx, edx
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x4c]
mov ecx, dword [ecx + 0x10]
mov eax, dword [eax + 0x30]
mov dword [esp + 0x70], 0
mov dword [esp + 0x2c], ecx
mov eax, dword [eax]
mov dword [esp + 0x14], eax
mov eax, dword [eax + 0xc]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x50]
mov byte [esi + 0x2d], 0x10
mov dword [esi + 0x30], eax
mov al, byte [edx + 0x29]
cmp al, 1
jbe 0x1007f2aa
movzx eax, al
sub eax, dword [esp + 0x18]
dec eax
push 0
mov dword [esp + 0x40], eax
lea ecx, [eax + eax*4]
shl ecx, 4
add ecx, 0x58
push ecx
mov ecx, dword [esp + 0x74]
call fcn.1001bee0
mov ecx, eax
add esp, 8
mov dword [esp + 0x44], ecx
test ecx, ecx
jne 0x1007f1d9
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xf8]
xor ecx, esp
call fcn.100a66bf
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x3c]
mov al, dl
inc al
movzx eax, al
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, dword [esp + 0x20]
movups xmm0, xmmword [eax]
movups xmmword [ecx + 8], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [ecx + 0x18], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [ecx + 0x28], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [ecx + 0x38], xmm0
movups xmm0, xmmword [eax + 0x40]
mov eax, dword [esp + 0x4c]
movups xmmword [ecx + 0x48], xmm0
mov eax, dword [eax + 4]
cmp edx, 1
jl 0x1007f278
add ecx, 0x58
lea ebx, [esi + 0x7c]
mov edi, eax
nop dword [eax + eax]
movzx eax, byte [ebx]
lea ebx, [ebx + 0x50]
lea ecx, [ecx + 0x50]
lea eax, [eax + eax*4]
add eax, eax
movups xmm0, xmmword [edi + eax*8 + 8]
movups xmmword [ecx - 0x50], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x18]
movups xmmword [ecx - 0x40], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x28]
movups xmmword [ecx - 0x30], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x38]
movups xmmword [ecx - 0x20], xmm0
movups xmm0, xmmword [edi + eax*8 + 0x48]
movups xmmword [ecx - 0x10], xmm0
sub edx, 1
jne 0x1007f230
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x4c]
test byte [eax + 0x22], 8
jne 0x1007f2f3
test byte [ecx + 0x2a], 0x20
jne 0x1007f2b3
inc dword [edi + 0x48]
mov edx, 0x1a
mov eax, dword [edi + 0x48]
mov ecx, ebx
push eax
push 0
mov dword [esp + 0x24], eax
call fcn.10038f70
add esp, 8
jmp 0x1007f2e9
mov eax, dword [edx + 4]
mov dword [esp + 0x44], eax
jmp 0x1007f27c
call fcn.10057c20
mov esi, eax
mov edx, 0x3a
mov eax, dword [edi + 0x44]
mov dword [esp + 0x1c], eax
lea ecx, [eax + 1]
mov dword [edi + 0x44], ecx
movzx ecx, word [esi + 0x32]
push ecx
push eax
mov ecx, ebx
call fcn.10038f70
add esp, 8
mov edx, esi
mov ecx, edi
call fcn.10039b50
mov esi, dword [esp + 0x24]
inc dword [edi + 0x48]
mov eax, dword [edi + 0x48]
mov dword [esp + 0x68], eax
push dword [esp + 0x50]
mov edx, 0x17
mov ecx, ebx
push 0
call fcn.10038f70
mov dword [esp + 0x88], eax
add esp, 8
mov eax, dword [esp + 0x64]
mov ecx, dword [eax + 0xc]
cmp ecx, 1
jle 0x1007f3d5
xor edx, edx
mov dword [esp + 0x3c], edx
test ecx, ecx
jle 0x1007f3d5
mov esi, dword [esp + 0x6c]
xor ecx, ecx
mov dword [esp + 0x30], ecx
xor edi, edi
nop dword [eax]
mov eax, dword [eax + 0x14]
add eax, ecx
mov ebx, dword [eax]
mov dword [esp + 0x58], ebx
cmp eax, dword [esp + 0x14]
je 0x1007f38e
test byte [ebx + 4], 1
jne 0x1007f38e
test byte [eax + 0x14], 2
jne 0x1007f38e
mov ebx, 0x1fff
test word [eax + 0x12], bx
je 0x1007f38e
mov edx, dword [esp + 0x58]
mov ecx, esi
push 0
push 0
call fcn.1004d710
push eax
mov edx, edi
mov ecx, esi
call fcn.1004d130
mov ecx, dword [esp + 0x3c]
add esp, 0xc
mov edx, dword [esp + 0x3c]
mov edi, eax
mov eax, dword [esp + 0x64]
inc edx
add ecx, 0x30
mov dword [esp + 0x3c], edx
mov dword [esp + 0x30], ecx
cmp edx, dword [eax + 0xc]
jl 0x1007f340
mov ebx, dword [esp + 0x5c]
mov ecx, edi
mov esi, dword [esp + 0x24]
mov dword [esp + 0x28], edi
mov edi, dword [esp + 0x60]
test ecx, ecx
je 0x1007f3d7
push 0
push ecx
push 0
mov edx, 0x148
mov ecx, edi
call fcn.1004cfd0
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x28], ecx
jmp 0x1007f3d7
xor ecx, ecx
mov edx, dword [esp + 0x40]
xor eax, eax
mov dword [esp + 0x30], 0xf0
mov dword [esp + 0x10], eax
cmp dword [edx + 0xc], eax
jle 0x1007f7c9
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x40]
lea eax, [eax + eax*2]
shl eax, 4
add eax, dword [ebx + 0x14]
mov ebx, dword [esp + 0x5c]
cmp dword [eax + 8], edx
je 0x1007f41f
mov esi, 0x400
test word [eax + 0x12], si
mov esi, dword [esp + 0x24]
je 0x1007f7af
mov eax, dword [eax]
mov dword [esp + 0x48], 0
test ecx, ecx
je 0x1007f438
test byte [eax + 4], 1
jne 0x1007f438
mov dword [ecx + 0xc], eax
mov eax, ecx
push dword [esp + 0x78]
mov edx, dword [esp + 0x48]
mov ecx, edi
push dword [esp + 0x34]
push 0
push 0
push eax
call fcn.10086b70
add esp, 0x14
mov dword [esp + 0x8c], eax
test eax, eax
je 0x1007f7ab
movzx ecx, byte [esi + 0x2c]
mov edx, dword [esp + 0x44]
push 0
push ecx
push dword [esp + 0x20]
lea ecx, [eax + 0x2e0]
push ecx
mov ecx, edi
call fcn.1007d850
mov eax, dword [esp + 0x5c]
add esp, 0x10
test byte [eax + 0x22], 8
jne 0x1007f6a4
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
mov eax, 0xffffffff
cmove ecx, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x58], ecx
test byte [eax + 0x2a], 0x20
jne 0x1007f4ec
push 0
push dword [esp + 0x6c]
mov edx, eax
mov ecx, edi
push dword [esp + 0x3c]
push 0xffffffffffffffff
call fcn.100501d0
push dword [esp + 0x68]
mov edx, 0x84
mov ecx, ebx
push eax
push 0
push dword [esp + 0x38]
call fcn.10039350
add esp, 0x20
mov dword [esp + 0x48], eax
jmp 0x1007f6a4
mov ecx, eax
call fcn.10057c20
mov ecx, dword [edi + 0x38]
mov dword [esp + 0x90], eax
movzx edx, word [eax + 0x32]
mov eax, dword [edi + 0x3c]
mov dword [esp + 0x20], edx
mov dword [esp + 0xc], eax
cmp edx, ecx
jg 0x1007f520
add eax, edx
sub ecx, edx
mov dword [edi + 0x38], ecx
mov ecx, dword [esp + 0xc]
mov dword [edi + 0x3c], eax
jmp 0x1007f52f
mov eax, dword [edi + 0x48]
lea ecx, [eax + 1]
add eax, edx
mov dword [esp + 0xc], ecx
mov dword [edi + 0x48], eax
mov dword [esp + 0x3c], 0
test edx, edx
je 0x1007f600
mov ebx, dword [esp + 0x3c]
mov esi, ecx
nop word [eax + eax]
mov eax, dword [esp + 0x90]
mov ecx, edi
mov edx, dword [esp + 0x2c]
push 0
push esi
mov eax, dword [eax + 4]
push dword [esp + 0x3c]
movsx eax, word [eax + ebx*2]
push eax
call fcn.100501d0
add esp, 0x10
mov dword [esp + 0x3c], eax
cmp eax, esi
je 0x1007f5ea
mov ecx, dword [edi + 8]
mov dword [esp + 0x98], ecx
mov edx, dword [ecx + 0x18]
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x94], eax
cmp dword [edx + 0x54], eax
mov edx, dword [esp + 0x3c]
jg 0x1007f5af
push 0
push esi
push edx
mov edx, 0x20
call fcn.10038de0
add esp, 0xc
jmp 0x1007f5ea
inc eax
mov dword [ecx + 0x20], eax
mov eax, dword [esp + 0x94]
lea ecx, [eax + eax*4]
mov eax, dword [esp + 0x98]
mov eax, dword [eax + 4]
mov word [eax + ecx*4], 0x20
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [esp + 0x20]
inc ebx
inc esi
cmp ebx, edx
jl 0x1007f550
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x58]
test eax, eax
je 0x1007f62c
push edx
push dword [esp + 0x10]
mov edx, 0x49
mov ecx, ebx
push 0
push dword [esp + 0x28]
call fcn.10039350
mov dword [esp + 0x58], eax
add esp, 0x10
mov eax, dword [esp + 0x58]
test eax, eax
js 0x1007f67f
push dword [esp + 0x68]
mov edx, 0x32
mov ecx, ebx
push dword [esp + 0x24]
push dword [esp + 0x14]
call fcn.10038e20
add esp, 0xc
mov edx, 0x70
mov ecx, ebx
push 0
push dword [esp + 0x6c]
push dword [esp + 0x24]
call fcn.10038e20
add esp, 0xc
cmp dword [esp + 0x58], 0
je 0x1007f67f
mov eax, dword [ebx]
cmp byte [eax + 0x41], 0
jne 0x1007f67f
mov eax, dword [ebx + 0x20]
lea ecx, [eax + eax*4]
mov eax, dword [ebx + 4]
mov byte [eax + ecx*4 - 0x11], 0x10
push dword [esp + 0x20]
mov edx, dword [esp + 0x10]
mov ecx, edi
call fcn.1004ff70
mov eax, dword [esp + 0x24]
add esp, 4
cmp eax, dword [edi + 0x38]
jle 0x1007f6a4
mov dword [edi + 0x38], eax
mov eax, dword [esp + 0xc]
mov dword [edi + 0x3c], eax
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
cmp dword [eax + 0x54], ecx
jg 0x1007f6ca
push 0
push dword [esp + 0x78]
mov edx, 0xf
mov ecx, ebx
push dword [esp + 0x58]
call fcn.10038de0
add esp, 0xc
jmp 0x1007f701
mov edx, dword [esp + 0x50]
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4 + 4], edx
mov edx, dword [esp + 0x74]
mov word [eax + ecx*4], 0xf
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
cmp dword [esp + 0x48], 0
je 0x1007f73b
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x18]
dec ecx
mov dword [eax + 0x5c], ecx
mov ecx, dword [esp + 0x48]
mov edx, dword [ebx + 0x20]
test ecx, ecx
jns 0x1007f720
lea ecx, [edx - 1]
mov eax, dword [ebx]
cmp byte [eax + 0x41], 0
je 0x1007f72f
mov eax, 0x102004bc
jmp 0x1007f738
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x8c]
mov ecx, 1
mov eax, dword [esp + 0x70]
cmp byte [edx + 0x27], 0
cmovne eax, ecx
mov ecx, dword [edx + 0x320]
mov dword [esp + 0x70], eax
test dword [ecx + 0x24], 0x200
je 0x1007f79c
cmp dword [esp + 0x10], 0
je 0x1007f775
mov eax, dword [esp + 0x38]
cmp dword [ecx + 0x1c], eax
jne 0x1007f79c
mov eax, dword [esp + 0x2c]
test byte [eax + 0x2a], 0x20
je 0x1007f78b
mov eax, dword [ecx + 0x1c]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x1007f79c
mov eax, dword [ecx + 0x1c]
or dword [esp + 0x30], 0x1000
mov dword [esp + 0x38], eax
jmp 0x1007f7a4
mov dword [esp + 0x38], 0
mov ecx, edx
call fcn.10087740
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x28]
jl 0x1007f3f6
mov eax, dword [esp + 0x38]
mov dword [esi + 0x38], eax
test eax, eax
je 0x1007f7db
mov eax, dword [esp + 0x78]
mov dword [esi + 8], eax
mov edx, dword [esp + 0x28]
test edx, edx
je 0x1007f7f3
mov ecx, dword [esp + 0x6c]
mov dword [edx + 0xc], 0
call fcn.1004d5a0
mov ecx, dword [esp + 0x80]
mov edx, dword [ebx + 0x20]
test ecx, ecx
jns 0x1007f804
lea ecx, [edx - 1]
mov eax, dword [ebx]
cmp byte [eax + 0x41], 0
je 0x1007f813
mov eax, 0x102004bc
jmp 0x1007f81c
mov eax, dword [ebx + 4]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 4], edx
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
mov edx, dword [esi + 0xc]
cmp dword [eax + 0x54], ecx
jg 0x1007f843
push 0
push edx
push 0
mov edx, 0xe
mov ecx, ebx
call fcn.10038de0
add esp, 0xc
jmp 0x1007f876
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov word [eax + ecx*4], 0xe
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov edx, dword [ebx + 0x18]
mov ecx, dword [edx + 0x74]
test ecx, ecx
je 0x1007f892
mov eax, dword [esp + 0x74]
lea eax, [eax*4 + 4]
sub ecx, eax
mov eax, dword [ebx + 0x20]
mov dword [ecx], eax
mov eax, dword [ebx + 0x20]
dec eax
mov dword [edx + 0x5c], eax
mov eax, dword [esp + 0x4c]
cmp byte [eax + 0x29], 1
jbe 0x1007f8f2
mov edx, dword [esp + 0x44]
test edx, edx
je 0x1007f8f2
mov ecx, dword [esp + 0x6c]
test ecx, ecx
je 0x1007f8e9
cmp dword [ecx + 0x208], 0
je 0x1007f8c3
call fcn.1001bc60
jmp 0x1007f8f2
cmp edx, dword [ecx + 0x114]
jb 0x1007f8e9
cmp edx, dword [ecx + 0x118]
jae 0x1007f8e9
mov eax, dword [ecx + 0x110]
mov dword [edx], eax
dec dword [ecx + 0xfc]
mov dword [ecx + 0x110], edx
jmp 0x1007f8f2
push edx
call fcn.1001bbf0
add esp, 4
cmp dword [esp + 0x70], 0
jne 0x1007e80e
mov edx, dword [esp + 0x14]
mov ecx, esi
call fcn.1007db20
jmp 0x1007e80e
test byte [esp + 0x80], 0x20
je 0x1007f922
mov byte [esi + 0x2d], 0xa1
mov eax, esi
jmp 0x1007e812
mov ecx, dword [esp + 0x38]
push dword [esp + 0x10]
mov al, byte [ecx + 0x101d264c]
movzx edx, byte [ecx + 0x101d0130]
mov ecx, ebx
mov byte [esi + 0x2d], al
mov eax, dword [esp + 0x38]
push eax
mov dword [esi + 0x30], eax
call fcn.10038f70
add esp, 8
mov byte [esi + 0x2f], 1
inc eax
mov dword [esi + 0x34], eax
mov eax, esi
jmp 0x1007e812
mov eax, dword [esp + 0x24]
mov ecx, dword [edx]
mov dword [esp + 0x8c], ecx
cmp dword [eax], esi
je 0x1007f976
test byte [ecx + 4], 1
je 0x1007fa38
test dword [esp + 0x80], 0x200
je 0x1007f9e3
mov edx, dword [eax + 0x24]
mov eax, dword [ebx + 0x18]
mov esi, dword [ebx + 0x20]
cmp dword [eax + 0x54], esi
jg 0x1007f9a9
push 0
push 0
push edx
mov edx, 0x2f
mov ecx, ebx
call fcn.10038de0
add esp, 0xc
mov esi, eax
jmp 0x1007f9dc
lea eax, [esi + 1]
mov dword [ebx + 0x20], eax
lea ecx, [esi + esi*4]
mov eax, dword [ebx + 4]
mov word [eax + ecx*4], 0x2f
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x8c]
push 0x10
push dword [esp + 0x80]
mov edx, ecx
mov ecx, edi
call fcn.10052060
add esp, 8
test esi, esi
je 0x1007fa2b
mov ecx, dword [ebx + 0x20]
mov eax, dword [ebx + 0x18]
dec ecx
mov dword [eax + 0x5c], ecx
mov edx, dword [ebx + 0x20]
test esi, esi
jns 0x1007fa10
lea esi, [edx - 1]
mov eax, dword [ebx]
cmp byte [eax + 0x41], 0
je 0x1007fa1f
mov eax, 0x102004bc
jmp 0x1007fa28
mov eax, dword [ebx + 4]
lea ecx, [esi + esi*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
mov edx, dword [esp + 0x78]
or word [edx + 0x14], 4
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
add edx, 0x30
dec ecx
mov dword [esp + 0x78], edx
mov dword [esp + 0x14], ecx
test ecx, ecx
jg 0x1007e830
mov esi, dword [esp + 0x64]
mov edx, dword [esi + 0x14]
mov esi, dword [esi + 0xc]
mov dword [esp + 0x1c], edx
mov dword [esp + 0xc], esi
test esi, esi
jle 0x1007fbea
mov ebx, dword [esp + 0x60]
mov edi, 0xb
test byte [edx + 0x14], 6
jne 0x1007fbd2
movzx eax, word [edx + 0x12]
test al, 0x82
setne cl
bt ax, di
setb al
test al, cl
je 0x1007fbd2
mov ecx, dword [esp + 0x34]
cmp dword [edx + 8], ecx
jne 0x1007fbd2
mov eax, dword [esp + 0x24]
cmp dword [eax], 0
jne 0x1007fbd2
mov eax, dword [edx]
xor edi, edi
push edi
push 0x83
push dword [edx + 0xc]
mov edx, dword [esp + 0x70]
push ecx
lea ecx, [esp + 0xb0]
mov dword [esp + 0x90], eax
call fcn.10081fe0
mov esi, eax
add esp, 0x10
test esi, esi
je 0x1007fb14
nop dword [eax]
mov edx, dword [esi + 0x20]
mov ecx, edx
mov eax, dword [esi + 0x24]
and ecx, dword [ebp + 8]
and eax, dword [ebp + 0xc]
or ecx, eax
jne 0x1007fb02
or edx, dword [esi + 0x24]
jne 0x1007fafd
test byte [esi + 0x12], 0x82
jne 0x1007fb16
test edi, edi
cmove edi, esi
lea ecx, [esp + 0xa0]
call fcn.10081d30
mov esi, eax
test esi, esi
jne 0x1007fae0
mov esi, edi
test esi, esi
je 0x1007fbc5
test byte [esi + 0x14], 4
jne 0x1007fbc5
mov ecx, dword [esp + 0x6c]
push 0
push 0x30
call fcn.1001bee0
mov edi, eax
add esp, 8
test edi, edi
je 0x1007fbc5
mov ecx, dword [esi]
mov edx, edi
mov eax, dword [esp + 0x80]
push 0x10
push dword [esp + 0x80]
movups xmm0, xmmword [ecx]
movups xmmword [edi], xmm0
movups xmm0, xmmword [ecx + 0x10]
movups xmmword [edi + 0x10], xmm0
movups xmm0, xmmword [ecx + 0x20]
mov ecx, ebx
movups xmmword [edi + 0x20], xmm0
mov eax, dword [eax + 0xc]
mov dword [edi + 0xc], eax
call fcn.10052060
mov ecx, dword [esp + 0x74]
add esp, 8
test ecx, ecx
je 0x1007fbbc
cmp dword [ecx + 0x208], 0
je 0x1007fb96
mov edx, edi
call fcn.1001bc60
jmp 0x1007fbc5
cmp edi, dword [ecx + 0x114]
jb 0x1007fbbc
cmp edi, dword [ecx + 0x118]
jae 0x1007fbbc
mov eax, dword [ecx + 0x110]
mov dword [edi], eax
dec dword [ecx + 0xfc]
mov dword [ecx + 0x110], edi
jmp 0x1007fbc5
push edi
call fcn.1001bbf0
add esp, 4
mov esi, dword [esp + 0xc]
mov edi, 0xb
mov edx, dword [esp + 0x1c]
dec esi
add edx, 0x30
mov dword [esp + 0xc], esi
mov dword [esp + 0x1c], edx
test esi, esi
jg 0x1007fa73
mov ebx, dword [esp + 0x5c]
mov edi, dword [esp + 0x24]
mov esi, dword [edi]
test esi, esi
je 0x1007fcb8
mov eax, dword [ebx + 0x20]
mov dword [edi + 0x1c], eax
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x20]
cmp dword [eax + 0x54], ecx
jg 0x1007fc1f
push 0
push esi
push 1
mov edx, 0x17
mov ecx, ebx
call fcn.10038de0
add esp, 0xc
jmp 0x1007fc52
lea eax, [ecx + 1]
mov dword [ebx + 0x20], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [ebx + 4]
mov word [eax + ecx*4], 0x17
mov byte [eax + ecx*4 + 3], 0
mov dword [eax + ecx*4 + 4], 1
mov dword [eax + ecx*4 + 8], esi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ebx, dword [esp + 0x60]
mov ecx, ebx
call fcn.10050280
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x64]
mov esi, dword [edx + 0x14]
xor edx, edx
mov dword [esp + 0x14], edx
cmp dword [eax + 0xc], edx
jle 0x1007fcb8
test byte [esi + 0x14], 6
jne 0x1007fcab
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edi + 0x48]
and eax, dword [edi + 0x4c]
or ecx, eax
jne 0x1007fca7
mov edx, dword [esi]
mov ecx, ebx
push 0x10
push dword [esp + 0x80]
call fcn.10052060
mov edx, dword [esp + 0x1c]
add esp, 8
or word [esi + 0x14], 4
mov eax, dword [esp + 0x64]
inc edx
add esi, 0x30
mov dword [esp + 0x14], edx
cmp edx, dword [eax + 0xc]
jl 0x1007fc73
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
mov ecx, dword [esp + 0x104]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100a66bf
mov esp, ebp
pop ebp
ret