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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1148
call fcn.102ddfa0
mov eax, dword [0x10411ce0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
mov dword [ebp - 0x1144], eax
xor eax, eax
mov dword [ebp - 0x1138], edx
push edi
mov dword [ebp - 0x113c], esi
mov ebx, dword [esi + 0x14]
add ebx, 0x1c
mov dword [ebp - 0x1108], eax
mov ecx, ebx
mov dword [ebp - 0x1140], ebx
mov dword [ebp - 0x1114], 0xffffffff
mov dword [ebp - 0x110c], eax
call fcn.10141440
mov edi, dword [esi + 0x14]
mov byte [esi + 0x2c], 1
mov dword [ebp - 0x112c], eax
cmp dword [edi + 0x4b4], 0
jbe 0x101476f5
cmp dword [edi + 0x4bc], 0
jle 0x101476f5
lea ecx, [edi + 0x1c]
call fcn.10141440
mov ecx, eax
mov eax, dword [edi + 0x4bc]
sub eax, dword [edi + 0x4b4]
add ecx, eax
jmp 0x101476ff
lea ecx, [edi + 0x1c]
call fcn.10141440
mov ecx, eax
mov edx, dword [ebp - 0x1138]
cmp ecx, 0xf
jge 0x1014771e
test dl, 3
jne 0x1014771e
mov eax, 0x4004
mov byte [esi + 0x2c], 0
mov dword [ebp - 0x1108], eax
mov byte [esi + 0x224], 0
lea eax, [esi + 0x3d9c]
mov dword [eax + 8], 0
mov dword [eax + 0xc], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x18], 0
mov dword [eax + 0x1c], 0
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0
mov dword [eax + 0x28], 0
cmp dword [esi + 0x248], 0
jne 0x1014779b
or eax, 0xffffffff
mov dword [esi + 0x57], eax
mov word [esi + 0x5b], ax
cmp byte [esi + 0x221], 0
jne 0x1014779b
mov dword [esi + 0x34], eax
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], eax
mov dword [esi + 0x40], eax
mov dword [esi + 0x44], eax
mov dword [esi + 0x48], eax
mov dword [esi + 0x4c], eax
mov eax, dword [esi + 0x23c]
cmp eax, 0x5622
jg 0x101477cf
je 0x1014780c
cmp eax, 0x2b11
jg 0x101477c1
je 0x1014780c
cmp eax, 0x1cb6
je 0x1014780c
cmp eax, 0x1f40
jmp 0x101477eb
cmp eax, 0x2ee0
je 0x1014780c
cmp eax, 0x3e80
jmp 0x101477eb
cmp eax, 0xac44
jg 0x101477e6
je 0x1014780c
cmp eax, 0x5dc0
je 0x1014780c
cmp eax, 0x7d00
jmp 0x101477eb
cmp eax, 0xbb80
je 0x1014780c
test dword [esi + 0x30], 0x1100
jne 0x1014780c
pop edi
pop esi
mov eax, 0x2008
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.102d6d23
mov esp, ebp
pop ebp
ret
test dl, 8
je 0x101478f6
cmp dword [esi], 0
mov dword [ebp - 0x1124], 0
jle 0x101478f6
lea eax, [esi + 0x3d2c]
lea ebx, [esi + 0x294]
mov edi, dword [ebx]
push 0x1000
push 0
mov dword [edi + 0x5c], eax
lea eax, [edi + 0x60]
push eax
call fcn.102dad40
xorps xmm0, xmm0
movdqu xmmword [edi + 0x1060], xmm0
mov dword [edi + 0x1070], 0
mov word [edi + 0x1207], 0
mov dword [edi + 0x1074], 1
mov dword [edi + 0x1078], 1
mov dword [edi + 0x107c], 0
mov dword [edi + 0x1080], 0
mov dword [edi + 0x120c], 0
mov eax, dword [ebx]
push 0x1000
add eax, 0x60
push 0
push eax
call fcn.102dad40
mov eax, dword [ebx]
xorps xmm0, xmm0
push 0x2000
push 0
movdqu xmmword [eax + 0x1060], xmm0
mov eax, dword [ebx]
push dword [eax + 4]
call fcn.102dad40
mov eax, dword [ebp - 0x1124]
lea ebx, [ebx + 4]
inc eax
add esp, 0x24
cmp eax, dword [esi]
mov dword [ebp - 0x1124], eax
lea eax, [esi + 0x3d2c]
jl 0x10147834
mov ebx, dword [ebp - 0x1140]
mov edx, dword [ebp - 0x1138]
xor eax, eax
mov dword [ebp - 0x1120], 7
mov dword [ebp - 0x1134], eax
xor ecx, ecx
mov byte [ebp - 0x1101], al
xorps xmm0, xmm0
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x10], eax
mov eax, edx
and eax, 3
mov dword [ebp - 0x1124], ecx
movdqu xmmword [ebp - 0x30], xmm0
mov dword [ebp - 0x111c], eax
movdqu xmmword [ebp - 0x20], xmm0
test eax, eax
jne 0x101483c1
cmp byte [esi + 0x2c], al
je 0x10148127
test dword [esi + 0x30], 0x1158
jne 0x10147986
mov eax, dword [ebx + 4]
cmp eax, 3
ja 0x10147976
mov edi, 0x1f
lea ecx, [ebx + 8]
sub edi, eax
mov edx, edi
call fcn.10148980
mov edx, eax
mov ecx, edi
mov eax, dword [ebx]
shl eax, cl
or edx, eax
add dword [ebx + 4], edi
mov dword [ebx], edx
add dword [ebx + 4], 0xfffffffd
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
shr eax, cl
and eax, 7
jmp 0x1014798a
mov eax, dword [esi + ecx*4 + 0x34]
mov dword [ebp - 0x1114], eax
sub eax, 0
je 0x101479a4
dec eax
jne 0x101479ae
mov dword [esi + 0x39c8], 1
jmp 0x101479ae
mov dword [esi + 0x39c8], 0
cmp dword [ebx + 0x28], 0
lea edi, [ebx + 8]
jne 0x101479da
mov al, byte [ebx + 0x28]
mov edx, dword [ebx + 4]
sub dword [edi + 0xc], edx
test al, al
mov eax, edx
je 0x101479c8
neg eax
add dword [edi], eax
mov ecx, dword [edi + 0x10]
mov eax, dword [edi + 0x1c]
sub ecx, edx
dec eax
and ecx, eax
mov dword [edi + 0x10], ecx
jmp 0x101479e9
push dword [ebx + 4]
mov edx, dword [ebx]
mov ecx, edi
call fcn.10148ab0
add esp, 4
cmp dword [edi], 0
mov dword [ebx + 4], 0
mov dword [ebx], 0
jge 0x101479ff
mov byte [esi + 0x2c], 0
mov eax, dword [ebp - 0x1114]
cmp eax, 8
ja case.default.0x10147a0e
jmp dword [eax*4 + 0x10148958]
mov edx, dword [esi + 4]
lea edi, [eax - 1]
neg edi
lea ecx, [ebp - 0x34]
lea eax, [ecx + eax*4]
sbb edi, edi
mov dword [ebp - 0x1110], eax
mov eax, dword [eax]
add edi, 2
mov dword [ebp - 0x1120], eax
mov eax, edx
mov dword [ebp - 0x1128], edi
lea ecx, [edi - 1]
sar eax, cl
cmp dword [ebp - 0x1120], eax
jge case.default.0x10147a0e
mov ecx, dword [ebp - 0x110c]
sub edx, edi
cmp ecx, edx
jg case.default.0x10147a0e
test dword [esi + 0x30], 0x1100
jne 0x10147ad4
test edi, edi
jle 0x10147ad4
lea ebx, [ecx + 0x9f]
lea ebx, [esi + ebx*4]
mov esi, edi
mov eax, dword [ebx]
push 0x80
push 0
mov edi, dword [eax + 0xc8]
add edi, 8
mov byte [eax + 0xb8], 0
mov dword [eax + 0x30], edi
mov dword [eax + 0xb4], 0
add eax, 0x34
push eax
call fcn.102dad40
push 0x80
push 0
push edi
call fcn.102dad40
add esp, 0x18
lea ebx, [ebx + 4]
dec esi
jne 0x10147a77
mov esi, dword [ebp - 0x113c]
mov ebx, dword [ebp - 0x1140]
mov edi, dword [ebp - 0x1128]
mov ecx, dword [ebp - 0x110c]
cmp byte [esi + 0x2c], 0
je 0x10147c1a
push dword [esi + 0x14]
movzx eax, byte [esi + 0x264]
push eax
push edi
push dword [esi + 0x250]
lea eax, [esi + 0x18]
push dword [esi + 0x30]
push eax
push dword [esi + 0x244]
lea eax, [ecx + 0xa5]
add ecx, 0x9f
lea eax, [esi + eax*4]
push eax
lea edx, [esi + ecx*4]
mov ecx, ebx
call fcn.10158ca0
add esp, 0x20
mov dword [ebp - 0x1108], eax
test eax, eax
je 0x10147b28
mov byte [esi + 0x2c], 0
cmp byte [esi + 0x2c], 0
je 0x10147c1a
mov eax, dword [ebp - 0x110c]
lea ecx, [esi + 0x57]
push dword [ebp - 0x1114]
lea edx, [esi + eax*4]
lea eax, [esi + 0x34]
push eax
lea eax, [ebp - 0x1101]
push eax
lea eax, [esi + 0x78]
push eax
lea eax, [esi + 0x60]
push eax
mov eax, dword [edx + 0x27c]
mov edx, dword [esi + 0x248]
push ecx
push dword [ebp - 0x110c]
movzx eax, byte [eax + 0x28]
lea ecx, [esi + 0x84]
push eax
call fcn.1014c1b0
add esp, 0x20
test eax, eax
je 0x10147bc4
push edi
mov edi, dword [ebp - 0x110c]
lea eax, [esi + 0x18]
push dword [esi + 0x30]
push eax
lea edx, [edi + 0xa5]
lea ecx, [edi + 0x9f]
lea edx, [esi + edx*4]
lea ecx, [esi + ecx*4]
call fcn.10158b20
mov ecx, dword [ebp - 0x1114]
inc edi
add esp, 0xc
mov dword [ebp - 0x110c], edi
cmp ecx, 1
jne 0x10147bce
inc edi
mov dword [ebp - 0x110c], edi
jmp 0x10147bce
mov ecx, dword [ebp - 0x1114]
mov byte [esi + 0x2c], 0
test dword [esi + 0x30], 0x2000
jne 0x10147be0
cmp byte [esi + 0x3d88], 1
jne 0x10147c1a
movzx eax, byte [ebp - 0x1101]
mov edx, dword [esi + 0x23c]
push eax
push ecx
push dword [esi + 0x244]
mov ecx, dword [esi + 0x3d84]
push dword [esi + 0x250]
push dword [esi + 0x25c]
call fcn.10145420
add esp, 0x14
test eax, eax
je 0x10147c1a
mov byte [esi + 0x3d88], 0
mov ecx, dword [ebp - 0x1110]
mov eax, dword [ebp - 0x1120]
inc eax
mov dword [ecx], eax
jmp case.0x10147a0e.7
mov eax, dword [ebp - 0x2c]
cmp eax, dword [esi + 4]
jg case.default.0x10147a0e
cmp byte [esi + 0x2c], 0
je 0x10147d6a
push 0x1000
lea eax, [ebp - 0x1034]
push 0
push eax
call fcn.102dad40
mov eax, dword [esi + 0x2ac]
lea edi, [esi + 0x2ac]
mov dword [ebp - 0x103c], eax
lea eax, [ebp - 0x1034]
mov dword [ebp - 0x1100], eax
mov eax, dword [esi + 0x250]
cdq
and edx, 7
mov dword [ebp - 0x1038], edi
add eax, edx
mov byte [ebp - 0x1048], 0
sar eax, 3
add edi, 8
push 0x80
mov dword [ebp - 0x10dc], eax
lea eax, [ebp - 0x10cc]
push 0
push eax
mov dword [ebp - 0x10d0], edi
mov dword [ebp - 0x104c], 0
call fcn.102dad40
push 0x80
push 0
push edi
call fcn.102dad40
push dword [esi + 0x14]
lea eax, [ebp - 0x1100]
mov ecx, ebx
mov dword [ebp - 0x1128], eax
lea edx, [ebp - 0x1128]
movzx eax, byte [esi + 0x264]
push eax
push 1
push dword [esi + 0x250]
lea eax, [esi + 0x18]
push dword [esi + 0x30]
push eax
push dword [esi + 0x244]
push 0
call fcn.10158ca0
add esp, 0x44
mov dword [ebp - 0x1108], eax
test eax, eax
je 0x10147d16
mov byte [esi + 0x2c], 0
cmp byte [esi + 0x2c], 0
je 0x10147d67
mov edx, dword [esi + 0x248]
lea eax, [esi + 0x34]
push 2
push eax
lea eax, [ebp - 0x1101]
push eax
lea eax, [esi + 0x78]
push eax
lea eax, [esi + 0x60]
push eax
movzx eax, byte [ebp - 0x10d8]
lea ecx, [esi + 0x57]
push ecx
push 0
push eax
lea ecx, [esi + 0x84]
call fcn.1014c1b0
add esp, 0x20
test eax, eax
mov eax, dword [ebp - 0x2c]
jne 0x10147d6a
inc eax
mov byte [esi + 0x2c], 0
mov dword [ebp - 0x2c], eax
jmp case.0x10147a0e.7
mov eax, dword [ebp - 0x2c]
inc eax
mov dword [ebp - 0x2c], eax
jmp case.0x10147a0e.7
push dword [ebp - 0x112c]
lea eax, [ebp - 0x112d]
mov ecx, ebx
push eax
push dword [esi + 0x14]
lea edx, [esi + 0x3d9c]
push dword [esi + 0x3d98]
call fcn.10146620
mov edx, dword [esi + 0x248]
lea eax, [esi + 0x34]
push 4
push eax
lea eax, [ebp - 0x1101]
push eax
lea eax, [esi + 0x78]
push eax
lea eax, [esi + 0x60]
push eax
movzx eax, byte [ebp - 0x112d]
lea ecx, [esi + 0x57]
push ecx
push 0
push eax
lea ecx, [esi + 0x84]
call fcn.1014c1b0
mov ecx, dword [esi + 0x3dc4]
add esp, 0x30
dec ecx
xor edx, edx
xor edi, edi
cmp ecx, 7
ja 0x10147dfd
cmp ecx, dword [esi + 0x3dc4]
jge 0x10147dfd
mov eax, dword [esi + ecx*4 + 0x3da4]
mov edx, dword [esi + 0x3d9c]
mov edi, dword [esi + ecx*4 + 0x3da8]
add edx, eax
sub edi, eax
mov ecx, dword [esi + 0x3dc8]
test ecx, ecx
je case.0x10147a0e.7
push ecx
push edi
call fcn.10142290
add esp, 8
jmp case.0x10147a0e.7
push dword [ebp - 0x112c]
mov edx, dword [esi + 0x14]
lea eax, [esi + 0x84]
push dword [esi + 0x248]
mov ecx, ebx
push eax
call fcn.101467c0
mov edi, eax
add esp, 0xc
mov dword [ebp - 0x1134], edi
test edi, edi
jns 0x10147e67
xor edx, edx
mov byte [esi + 0x2c], 0
test edi, edi
mov eax, 0x4002
mov dword [ebp - 0x1108], eax
setns dl
mov dword [ebp - 0x1134], edx
jmp case.0x10147a0e.7
cmp edi, 1
jle 0x10147eb2
push ecx
lea edx, [esi + 0x34]
lea ecx, [esi + 0x84]
call fcn.1014c550
add esp, 4
cmp eax, 7
jge 0x10147e9b
lea edi, [eax + 0xd]
mov ecx, 7
sub ecx, eax
lea edi, [esi + edi*4]
or eax, 0xffffffff
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x1134]
cmp dword [ebp - 0x1124], 0
movzx eax, byte [esi + 0x222]
mov dword [esi + 4], eax
je 0x10147eb2
mov byte [esi + 0x2c], 0
xor edx, edx
test edi, edi
setns dl
mov dword [ebp - 0x1134], edx
jmp case.0x10147a0e.7
mov eax, dword [ebx + 4]
cmp eax, 4
ja 0x10147eea
mov edi, 0x1f
lea ecx, [ebx + 8]
sub edi, eax
mov edx, edi
call fcn.10148980
mov edx, dword [ebx]
mov ecx, edi
shl edx, cl
or eax, edx
add dword [ebx + 4], edi
mov dword [ebx], eax
add dword [ebx + 4], 0xfffffffc
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
shr eax, cl
and eax, 0xf
cmp eax, 0xf
jne 0x10147f33
cmp ecx, 8
ja 0x10147f20
mov edi, 0x1f
sub edi, ecx
lea ecx, [ebx + 8]
mov edx, edi
call fcn.10148980
mov edx, dword [ebx]
mov ecx, edi
shl edx, cl
or eax, edx
add dword [ebx + 4], edi
mov dword [ebx], eax
add dword [ebx + 4], 0xfffffff8
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
shr eax, cl
and eax, 0xff
add eax, 0xe
shl eax, 3
mov dword [ebp - 0x1110], eax
test eax, eax
jle case.0x10147a0e.7
movzx edi, byte [ebp - 0x1101]
jmp 0x10147f50
push 1
push edi
push dword [ebp - 0x1120]
lea eax, [ebp - 0x1110]
mov edx, ebx
push eax
mov ecx, esi
call fcn.10146920
add esp, 0x10
mov dword [ebp - 0x1108], eax
test eax, eax
jne 0x101480fb
cmp dword [ebp - 0x1110], eax
jg 0x10147f50
jmp case.0x10147a0e.7
mov edi, dword [esi + 0x14]
cmp dword [edi + 0x4b4], 0
jbe 0x10147fb4
cmp dword [edi + 0x4bc], 0
jle 0x10147fb4
lea ecx, [edi + 0x1c]
call fcn.10141440
mov ecx, dword [edi + 0x4bc]
sub ecx, dword [edi + 0x4b4]
add eax, ecx
jmp 0x1014800e
cmp dword [edi + 0x44], 0
jne 0x10147fea
mov al, byte [edi + 0x44]
lea edx, [edi + 0x24]
mov ecx, dword [edi + 0x20]
sub dword [edx + 0xc], ecx
test al, al
mov dword [ebp - 0x1128], ecx
mov eax, ecx
je 0x10147fd4
neg eax
add dword [edx], eax
mov ecx, dword [edx + 0x10]
mov eax, dword [edx + 0x1c]
sub ecx, dword [ebp - 0x1128]
dec eax
and ecx, eax
mov dword [edx + 0x10], ecx
jmp 0x10147ffe
push dword [edi + 0x20]
mov edx, dword [edi + 0x1c]
lea ecx, [edi + 0x24]
call fcn.10148ab0
add esp, 4
lea edx, [edi + 0x24]
mov eax, dword [edx]
mov dword [edi + 0x20], 0
mov dword [edi + 0x1c], 0
mov dword [ebp - 0x1110], eax
test eax, eax
jle 0x10148099
mov eax, dword [esi + 0x30]
test eax, 0x2000
je 0x10148099
test eax, 0x1110
je 0x10148099
mov eax, dword [ebp - 0x30]
xor edi, edi
mov ecx, dword [ebp - 0x34]
add eax, ecx
mov dword [ebp - 0x1118], eax
test eax, eax
jle 0x10148092
lea eax, [esi + 0x34]
mov dword [ebp - 0x1128], eax
lea ebx, [ebx]
push ecx
mov ecx, dword [esi + 0x3d84]
mov edx, ebx
push edi
push dword [eax]
mov eax, dword [esi + 0x30]
and eax, 0x4000
push eax
lea eax, [ebp - 0x1110]
push 0xffffffffffffffff
push eax
call fcn.10145b40
add esp, 0x18
test eax, eax
jne 0x101480e3
mov eax, dword [ebp - 0x1128]
inc edi
add eax, 4
mov dword [ebp - 0x1128], eax
cmp edi, dword [ebp - 0x1118]
jl 0x10148050
mov byte [esi + 0x3d88], 1
test dword [esi + 0x30], 0x21100
jne case.0x10147a0e.7
cmp dword [ebp - 0x1110], 7
jle case.0x10147a0e.7
movzx edi, byte [ebp - 0x1101]
push 0
push edi
push dword [ebp - 0x1120]
lea eax, [ebp - 0x1110]
mov edx, ebx
push eax
mov ecx, esi
call fcn.10146920
add esp, 0x10
mov dword [ebp - 0x1108], eax
test eax, eax
jne 0x101480e9
cmp dword [ebp - 0x1110], 7
jg 0x101480b2
jmp case.0x10147a0e.7
mov byte [esi + 0x2c], 0
jmp 0x10148099
mov eax, 0x4002
jmp 0x101480f5
mov eax, 0x4004
mov dword [ebp - 0x1108], eax
mov byte [esi + 0x2c], 0
mov ecx, dword [ebp - 0x1124]
mov eax, dword [ebp - 0x1114]
inc ecx
mov dword [ebp - 0x1120], eax
cmp eax, 7
mov eax, dword [ebp - 0x111c]
mov dword [ebp - 0x1124], ecx
jne 0x10147934
test eax, eax
jne 0x101483c1
mov edx, dword [ebp - 0x112c]
mov ecx, ebx
call fcn.10142f90
mov edi, dword [esi + 0x14]
mov ecx, 0x4002
cmp dword [edi + 0x4bc], 0
jle 0x10148397
cmp dword [edi + 0x4b4], 0
jbe 0x101481cb
cmp dword [edi + 0x4bc], 0
jle 0x101481cb
cmp dword [edi + 0x44], 0
jne 0x10148199
mov al, byte [edi + 0x44]
lea edx, [edi + 0x24]
mov ecx, dword [edi + 0x20]
sub dword [edx + 0xc], ecx
test al, al
mov dword [ebp - 0x1118], ecx
mov eax, ecx
je 0x10148183
neg eax
add dword [edx], eax
mov eax, dword [edx + 0x10]
mov ecx, dword [edx + 0x1c]
sub eax, dword [ebp - 0x1118]
dec ecx
and ecx, eax
mov dword [edx + 0x10], ecx
jmp 0x101481ad
push dword [edi + 0x20]
mov edx, dword [edi + 0x1c]
lea ecx, [edi + 0x24]
call fcn.10148ab0
add esp, 4
lea edx, [edi + 0x24]
mov edx, dword [edx]
mov dword [edi + 0x20], 0
mov dword [edi + 0x1c], 0
sub edx, dword [edi + 0x4b4]
add edx, dword [edi + 0x4bc]
jmp 0x10148225
cmp dword [edi + 0x44], 0
jne 0x10148201
mov al, byte [edi + 0x44]
lea edx, [edi + 0x24]
mov ecx, dword [edi + 0x20]
sub dword [edx + 0xc], ecx
test al, al
mov dword [ebp - 0x1118], ecx
mov eax, ecx
je 0x101481eb
neg eax
add dword [edx], eax
mov ecx, dword [edx + 0x10]
mov eax, dword [edx + 0x1c]
sub ecx, dword [ebp - 0x1118]
dec eax
and ecx, eax
mov dword [edx + 0x10], ecx
jmp 0x10148215
push dword [edi + 0x20]
mov edx, dword [edi + 0x1c]
lea ecx, [edi + 0x24]
call fcn.10148ab0
add esp, 4
lea edx, [edi + 0x24]
mov edx, dword [edx]
mov dword [edi + 0x20], 0
mov dword [edi + 0x1c], 0
mov eax, dword [ebp - 0x1108]
mov ecx, 0x4002
mov dword [ebp - 0x1110], edx
test edx, edx
je 0x1014839d
test eax, eax
mov byte [esi + 0x2c], 0
cmove eax, ecx
mov ecx, dword [ebx + 4]
mov dword [ebp - 0x1108], eax
mov dword [ebp - 0x1118], ecx
test edx, edx
js 0x101482df
cmp ecx, edx
jbe 0x10148277
cmp dword [ebx + 0x28], 0
jne 0x101482a2
sub ecx, edx
mov dword [ebx + 4], ecx
mov ecx, 0x4002
jmp 0x1014839d
cmp dword [ebx + 0x28], 0
jne 0x101482a2
mov al, byte [ebx + 0x28]
lea edi, [ebx + 8]
sub dword [edi + 0xc], ecx
test al, al
je 0x1014828c
neg ecx
add dword [edi], ecx
mov ecx, dword [edi + 0x10]
mov eax, dword [edi + 0x1c]
sub ecx, dword [ebp - 0x1118]
dec eax
and ecx, eax
mov dword [edi + 0x10], ecx
jmp 0x101482b8
mov edx, dword [ebx]
lea edi, [ebx + 8]
push ecx
mov ecx, edi
call fcn.10148ab0
mov edx, dword [ebp - 0x1110]
add esp, 4
mov al, byte [ebx + 0x28]
mov dword [ebx + 4], 0
mov dword [ebx], 0
add dword [edi + 0xc], edx
test al, al
mov eax, edx
je 0x101482d3
neg eax
sub dword [edi], eax
mov eax, dword [edi + 0x10]
add eax, edx
jmp 0x10148389
neg edx
mov dword [ebp - 0x1110], edx
lea edi, [edx + ecx]
cmp edi, 0x20
jae 0x10148326
cmp dword [ebx + 0x28], 0
jne 0x10148351
mov al, byte [ebx + 0x28]
mov dword [ebx + 4], edi
sub dword [ebx + 0x14], edi
test al, al
mov eax, edi
je 0x10148306
neg eax
add dword [ebx + 8], eax
mov eax, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x24]
sub eax, edi
dec ecx
and ecx, eax
mov dword [ebx + 0x18], ecx
mov dword [ebx + 4], 0
mov dword [ebx], 0
jmp 0x10148392
cmp dword [ebx + 0x28], 0
jne 0x10148351
mov al, byte [ebx + 0x28]
lea edi, [ebx + 8]
sub dword [edi + 0xc], ecx
test al, al
je 0x1014833b
neg ecx
add dword [edi], ecx
mov ecx, dword [edi + 0x10]
mov eax, dword [edi + 0x1c]
sub ecx, dword [ebp - 0x1118]
dec eax
and ecx, eax
mov dword [edi + 0x10], ecx
jmp 0x10148367
mov edx, dword [ebx]
lea edi, [ebx + 8]
push ecx
mov ecx, edi
call fcn.10148ab0
mov edx, dword [ebp - 0x1110]
add esp, 4
mov al, byte [ebx + 0x28]
mov dword [ebx + 4], 0
mov dword [ebx], 0
sub dword [edi + 0xc], edx
test al, al
mov eax, edx
je 0x10148382
neg eax
add dword [edi], eax
mov eax, dword [edi + 0x10]
sub eax, edx
mov ecx, dword [edi + 0x1c]
dec ecx
and ecx, eax
mov dword [edi + 0x10], ecx
mov ecx, 0x4002
mov eax, dword [ebp - 0x1108]
cmp byte [esi + 0x2c], 0
je 0x101483bb
cmp dword [ebp - 0x1114], 7
je 0x101483bb
test eax, eax
mov byte [esi + 0x2c], 0
cmove eax, ecx
mov dword [ebp - 0x1108], eax
mov eax, dword [ebp - 0x111c]
mov edx, dword [ebp - 0x110c]
test edx, edx
je 0x101483cf
cmp edx, dword [esi]
jle 0x101483e0
test eax, eax
jne 0x101483e0
mov edi, dword [ebp - 0x1108]
mov eax, 0x4004
jmp 0x101483f0
mov edi, dword [ebp - 0x1108]
cmp edx, dword [esi + 4]
jle 0x10148403
mov eax, 0x2003
test edi, edi
mov dword [ebp - 0x110c], 0
mov byte [esi + 0x2c], 0
cmove edi, eax
mov ecx, dword [esi + 0x14]
mov dword [ebp - 0x1118], ecx
mov eax, dword [ecx]
sub eax, 2
jne 0x10148453
cmp byte [ecx + 0x88], al
jbe 0x1014842b
cmp byte [ecx + 0x7a], al
jne 0x10148453
call fcn.10143390
mov ecx, dword [ebp - 0x1118]
cmp byte [ecx + 0x7a], 0
jne 0x10148453
mov ax, word [ecx + 0xc2]
dec ax
add ax, ax
inc ax
and ax, word [ecx + 0xd0]
cmp ax, word [ecx + 0xd4]
je 0x10148453
mov byte [esi + 0x2c], 0
cmp byte [esi + 0x2c], 0
je 0x1014847c
cmp dword [ebp - 0x111c], 0
jne 0x1014847c
mov eax, dword [ebp - 0x110c]
mov dword [esi + 0x3d80], eax
mov al, byte [esi + 0x3d88]
mov byte [esi + 0x3d89], al
jmp 0x10148499
cmp dword [esi], 0
jle 0x10148499
mov eax, dword [esi + 0x3d80]
mov dword [ebp - 0x110c], eax
mov al, byte [esi + 0x3d89]
mov byte [esi + 0x3d88], al
cmp dword [ebp - 0x1134], 1
lea edx, [esi + 0x84]
mov eax, dword [ebp - 0x110c]
mov dword [esi + 0x254], eax
jne 0x10148506
cmp byte [edx + 0x19d], 0
je 0x10148506
movzx eax, byte [edx + 0xf]
mov ecx, dword [esi + 0x3dc8]
movzx edx, byte [edx + 0xd]
mov dword [ebp - 0x1118], eax
test ecx, ecx
je 0x10148500
test edx, edx
je 0x101484f5
lea eax, [esi + 0x84]
mov al, byte [eax + 0xe]
and al, 3
movzx eax, al
mov word [ecx + 0xc], ax
mov eax, dword [ebp - 0x1118]
mov word [ecx + 0xe], ax
mov word [ecx + 0x10], dx
mov dword [ecx + 0x20], 0
lea edx, [esi + 0x84]
test edi, edi
je 0x1014851b
lea eax, [edi - 0x4000]
cmp eax, 0xfff
ja 0x10148942
mov ecx, dword [esi + 0x3d98]
test ecx, ecx
je 0x1014854a
cmp byte [ecx + 0x15], 0
jne 0x1014854a
push dword [ebp - 0x110c]
lea eax, [esi + 0x57]
push eax
movzx eax, byte [edx]
mov edx, ebx
push eax
lea eax, [esi + 0x294]
push eax
call fcn.10149800
add esp, 0x10
mov edx, dword [ebp - 0x110c]
xor ecx, ecx
mov dword [ebp - 0x1120], ecx
test edx, edx
jle 0x101488b1
mov ebx, dword [ebp - 0x1138]
mov eax, ebx
and eax, 0xc
and ebx, 2
mov dword [ebp - 0xc], ebx
lea ebx, [esi + 0x294]
mov dword [ebp - 0x1118], eax
lea ecx, [ecx]
movzx eax, byte [esi + ecx + 0x57]
cmp eax, edx
jl 0x1014858e
mov edx, dword [ebx - 0x18]
jmp 0x10148595
mov edx, dword [esi + eax*4 + 0x27c]
cmp dword [ebp + 0x10], 0
mov dword [ebp - 0x111c], edx
je 0x101485c2
mov eax, dword [ebp - 0x110c]
mov dword [ebp - 0x112c], eax
mov eax, dword [esi + 0x80]
add eax, ecx
mov ecx, dword [ebp - 0x110c]
movzx eax, byte [eax + ecx*8 - 8]
jmp 0x101485e6
mov eax, dword [esi + 0x80]
add eax, ecx
mov dword [ebp - 0x112c], 1
mov ecx, dword [ebp - 0x110c]
movzx eax, byte [eax + ecx*8 - 8]
imul eax, dword [esi + 0x250]
cmp byte [esi + 0x2c], 0
mov dword [ebp - 0x1124], eax
je 0x10148602
test byte [ebp - 0x1138], 1
jne 0x10148602
mov eax, 1
jmp 0x10148604
xor eax, eax
push dword [esi + 0x30]
push eax
push ecx
push dword [esi + 0x250]
lea eax, [esi + 0x18]
push eax
push ecx
mov ecx, dword [ebx]
add ecx, 0x5c
call fcn.101446a0
add esp, 0x18
cmp dword [ebp - 0x1118], 0
je 0x10148654
mov eax, dword [ebx]
add eax, 0x20
je 0x10148654
mov ecx, 0xff
mov dword [eax], 0
mov dword [eax + 4], 1
mov word [eax + 8], cx
xor ecx, ecx
mov byte [eax + 0x2a], 0
mov word [eax + 0x28], cx
mov byte [eax + 0x3a], cl
movzx eax, byte [esi + 0x3d88]
mov edx, dword [esi + 0x3d84]
mov ecx, dword [esi + 0x3d98]
push eax
push dword [esi + 0x250]
mov eax, dword [ebx]
push dword [ebp - 0x1120]
add eax, 0x20
push eax
push dword [ebp - 0x111c]
call fcn.10149c00
mov edx, dword [ebp - 0x111c]
add esp, 0x14
mov eax, dword [edx + 0x2c]
dec eax
je 0x1014882f
dec eax
je 0x101486a5
mov edi, 5
jmp 0x10148861
mov eax, dword [ebx]
movsx ecx, word [esi + 0x250]
cmp ecx, 0x200
mov dword [ebp - 0x1114], ecx
push ecx
mov eax, dword [eax]
lea ecx, [ebp - 0x1134]
mov dword [ebp - 0x1128], eax
mov eax, dword [edx]
mov dword [ebp - 0x1108], eax
movsx eax, word [edx + 4]
mov edx, 0x103c99b0
mov dword [ebp - 0x1110], eax
mov eax, 0x103cc530
cmovne eax, edx
mov dword [ebp - 0x1134], 0
lea edx, [ebp - 0x1110]
mov dword [ebp - 0x1148], eax
call fcn.10158510
mov edx, dword [ebp - 0x1114]
lea eax, [ebp - 0x1110]
mov ecx, dword [ebp - 0x1108]
push eax
call fcn.10165ce0
mov edx, dword [ebp - 0x1134]
add esp, 8
test edx, edx
je 0x10148747
push dword [ebp - 0x1110]
mov ecx, dword [ebp - 0x1108]
push dword [ebp - 0x1114]
call fcn.101583b0
add esp, 8
jmp 0x101487f4
mov ecx, dword [ebp - 0x1110]
mov eax, dword [ebp - 0x1108]
test ecx, ecx
je 0x101487f4
mov edx, 0x1f
jle 0x101487a6
cmp ecx, edx
cmovl edx, ecx
mov ecx, edx
mov edx, dword [ebp - 0x1114]
movd xmm1, ecx
and edx, 3
je 0x10148780
shl dword [eax], cl
add eax, 4
dec edx
jne 0x10148778
mov ecx, dword [ebp - 0x1114]
sar ecx, 2
test ecx, ecx
je 0x101487f4
lea ecx, [ecx]
lea eax, [eax + 0x10]
movdqu xmm0, xmmword [eax - 0x10]
pslld xmm0, xmm1
movdqu xmmword [eax - 0x10], xmm0
dec ecx
jne 0x10148790
jmp 0x101487f4
neg ecx
cmp ecx, edx
cmovl edx, ecx
mov ecx, edx
mov edx, dword [ebp - 0x1114]
movd xmm1, ecx
and edx, 3
je 0x101487c8
mov edi, edi
sar dword [eax], cl
add eax, 4
dec edx
jne 0x101487c0
mov ecx, dword [ebp - 0x1114]
sar ecx, 2
test ecx, ecx
je 0x101487f4
jmp 0x101487e0
lea eax, [eax + 0x10]
movdqu xmm0, xmmword [eax - 0x10]
psrad xmm0, xmm1
movdqu xmmword [eax - 0x10], xmm0
dec ecx
jne 0x101487e0
mov eax, dword [ebp - 0x112c]
mov ecx, dword [ebp - 0x1144]
mov edx, dword [ebp - 0x1108]
movsx eax, al
push eax
push dword [ebp - 0x1114]
mov eax, dword [ebp - 0x1124]
push dword [ebp - 0x1128]
push dword [ebp - 0x1148]
lea ecx, [ecx + eax*2]
call fcn.10164560
add esp, 0x10
jmp 0x1014885b
mov eax, dword [ebp - 0x112c]
sub esp, 8
mov ecx, dword [ebp - 0x1144]
push eax
movzx eax, word [esi + 0x250]
push eax
mov eax, dword [ebp - 0x1124]
lea eax, [ecx + eax*2]
mov ecx, dword [ebx]
push eax
call fcn.101582b0
add esp, 0x14
mov edx, dword [ebp - 0x111c]
cmp dword [ebp - 0xc], 0
je 0x1014888d
mov eax, dword [esi + 0x250]
shl eax, 2
push eax
push 0
push dword [edx]
call fcn.102dad40
mov eax, dword [ebx]
push 0x2000
push 0
push dword [eax]
call fcn.102dad40
add esp, 0x18
mov ecx, dword [ebp - 0x1120]
add ebx, 4
mov edx, dword [ebp - 0x110c]
inc ecx
mov dword [ebp - 0x1120], ecx
cmp ecx, edx
jl 0x10148580
mov ebx, dword [ebp - 0x1140]
mov ecx, dword [esi + 0x3d98]
test ecx, ecx
je 0x101488df
cmp byte [ecx + 0x15], 0
je 0x101488df
push edx
lea eax, [esi + 0x57]
mov edx, ebx
push eax
movzx eax, byte [esi + 0x84]
push eax
lea eax, [esi + 0x294]
push eax
call fcn.10149800
add esp, 0x10
movdqu xmm0, xmmword [esi + 0x60]
mov eax, dword [esi + 0x78]
xor edx, edx
mov ebx, dword [ebp - 0x110c]
mov dword [ebp - 0xc], eax
mov ax, word [esi + 0x7c]
mov word [ebp - 8], ax
movdqu xmmword [ebp - 0x24], xmm0
movq xmm0, qword [esi + 0x70]
movq qword [ebp - 0x14], xmm0
test ebx, ebx
jle 0x1014893f
lea ecx, [ecx]
mov eax, dword [esi + 0x80]
add eax, edx
movzx ecx, byte [eax + ebx*8 - 8]
mov eax, dword [ebp + edx*4 - 0x24]
mov dword [esi + ecx*4 + 0x60], eax
mov eax, dword [esi + 0x80]
add eax, edx
movzx ecx, byte [eax + ebx*8 - 8]
mov al, byte [ebp + edx - 0xc]
inc edx
mov byte [ecx + esi + 0x78], al
cmp edx, ebx
jl 0x10148910
inc dword [esi + 8]
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.102d6d23
mov esp, ebp
pop ebp
ret