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

Disassembly:
sub esp, 0x10c
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x104], eax
push ebx
mov ebx, dword [esp + 0x114]
push ebp
push esi
mov esi, dword [esp + 0x120]
push edi
mov edi, edx
mov edx, ecx
add ebx, edi
mov dword [esp + 0x6c], edi
mov ebp, edi
mov dword [esp + 0x54], edx
mov dword [esp + 0x2c], ebx
mov eax, dword [edx + 0x7368]
mov edi, dword [edx + 0x7378]
mov ecx, dword [edx + 0x72b0]
add edi, eax
cmp dword [esp + 0x12c], 0
mov edx, dword [edx + 0x72b4]
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0x48], ebp
mov dword [esp + 0x18], eax
mov dword [esp + 0x44], edi
mov edx, dword [edx + 0x72b8]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x4c], edx
je 0x40906c
mov ebx, dword [esp + 0x54]
mov edi, 4
cmp dword [esp + 0x12c], edi
push dword [esp + 0x128]
cmovl edi, dword [esp + 0x130]
mov dword [ebx + 0x72fc], 1
mov eax, dword [ebx + 0x682c]
mov dword [esp + 0xb8], eax
mov eax, dword [ebx + 0x6830]
mov dword [esp + 0xbc], eax
mov eax, dword [ebx + 0x6834]
mov dword [esp + 0xc0], eax
mov eax, ebp
sub eax, ecx
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc8], edx
lea ecx, [esp + 0x8c]
mov edx, esi
mov dword [esp + 0x34], edi
mov dword [esp + 0xcc], eax
call fcn.00401090
add esp, 4
cmp eax, 0xffffff88
ja 0x408d7e
push dword [ebx]
lea edx, [esp + 0x8c]
lea ecx, [esp + 0xa0]
call fcn.00407b40
add esp, 4
lea edx, [esp + 0x88]
lea ecx, [esp + 0xa4]
push dword [ebx + 8]
call fcn.00407b40
add esp, 4
lea edx, [esp + 0x88]
lea ecx, [esp + 0xac]
push dword [ebx + 4]
call fcn.00407b40
add esp, 4
lea ecx, [esp + 0x88]
xor ebx, ebx
mov dword [esp + 0x24], ebx
call fcn.00401220
cmp eax, 2
jg 0x408782
lea eax, [esp + 0xd0]
mov dword [esp + 0x1c], eax
nop dword [eax + eax]
cmp ebx, edi
jge 0x40878a
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x9c]
mov edx, dword [ecx + eax*8]
mov esi, dword [ecx + eax*8 + 4]
mov ecx, edx
mov eax, esi
mov dword [esp + 0x3c], edx
shrd ecx, eax, 0x10
mov eax, dword [esp + 0xac]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x70], edx
mov edx, dword [ecx + eax*8]
mov edi, dword [ecx + eax*8 + 4]
mov ecx, edx
mov eax, edi
mov dword [esp + 0x40], edx
shrd ecx, eax, 0x10
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x78], edx
mov dword [esp + 0x28], edi
mov edx, dword [ecx + eax*8]
mov eax, dword [ecx + eax*8 + 4]
mov ecx, edx
mov dword [esp + 0x14], eax
shrd ecx, eax, 0x10
mov dword [esp + 0x10], edx
mov dword [esp + 0x80], edx
cmp cl, 1
jbe 0x408566
cmp dword [esp + 0x130], 0
je 0x408543
cmp cl, 0x19
jb 0x408543
movzx edi, cl
mov eax, 0x20
sub eax, dword [esp + 0x8c]
lea ecx, [esp + 0x88]
cmp edi, eax
mov edx, edi
cmovae edx, eax
sub edi, edx
call fcn.004011d0
mov ebx, eax
mov ecx, edi
shl ebx, cl
lea ecx, [esp + 0x88]
add ebx, dword [esp + 0x14]
call fcn.00401220
test edi, edi
je 0x40851e
mov edx, edi
lea ecx, [esp + 0x88]
call fcn.004011d0
add ebx, eax
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0xb8], eax
jmp 0x4085f1
movzx edx, cl
lea ecx, [esp + 0x88]
call fcn.004011d0
mov ebx, eax
lea ecx, [esp + 0x88]
add ebx, dword [esp + 0x14]
call fcn.00401220
jmp 0x408522
xor ebx, ebx
test esi, esi
sete bl
test cl, cl
jne 0x408595
test esi, esi
je 0x40857e
mov ebx, dword [esp + 0xb4]
jmp 0x4085f8
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb4]
mov dword [esp + 0xb8], eax
jmp 0x4085f1
mov edx, 1
lea ecx, [esp + 0x88]
call fcn.004011d0
mov edx, dword [esp + 0xb4]
lea ecx, [ebx + eax]
add ecx, dword [esp + 0x14]
cmp ecx, 3
jne 0x4085c7
lea eax, [edx - 1]
xor ebx, ebx
test eax, eax
sete bl
add ebx, eax
jmp 0x4085dc
mov eax, dword [esp + ecx*4 + 0xb4]
xor ebx, ebx
test eax, eax
sete bl
add ebx, eax
cmp ecx, 1
je 0x4085ea
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xbc], eax
mov dword [esp + 0xb8], edx
mov dword [esp + 0xb4], ebx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x5c], edi
test al, al
je 0x408621
movzx edx, al
lea ecx, [esp + 0x88]
call fcn.004011d0
add edi, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x5c], edi
mov ecx, dword [esp + 0x38]
movzx ecx, cl
movzx eax, al
add eax, ecx
mov dword [esp + 0x34], ecx
cmp eax, 0x14
jb 0x408646
lea ecx, [esp + 0x88]
call fcn.00401220
mov ecx, dword [esp + 0x34]
cmp byte [esp + 0x38], 0
mov dword [esp + 0x58], esi
jbe 0x408665
mov edx, ecx
lea ecx, [esp + 0x88]
call fcn.004011d0
add esi, eax
mov dword [esp + 0x58], esi
lea ecx, [esp + 0x88]
call fcn.00401220
mov ecx, dword [esp + 0xc8]
mov eax, dword [esp + 0xc0]
add ecx, esi
movzx esi, byte [esp + 0x73]
cmp ebx, ecx
cmova eax, dword [esp + 0xc4]
sub eax, ebx
mov ebx, dword [esp + 0x88]
add eax, ecx
mov edx, ebx
mov dword [esp + 0x64], eax
lea eax, [edi + ecx]
mov edi, dword [esp + 0x8c]
add edi, esi
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x3c]
mov ecx, edi
neg ecx
movzx eax, ax
and ecx, 0x1f
shr edx, cl
and edx, dword [esi*4 + 0x424890]
add edx, eax
mov dword [esp + 0x9c], edx
movzx edx, byte [esp + 0x7b]
lea ecx, [edi + edx]
neg ecx
lea eax, [edx + edi]
and ecx, 0x1f
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x40]
shr ebx, cl
lea ecx, [esp + 0x88]
and ebx, dword [edx*4 + 0x424890]
movzx eax, ax
add ebx, eax
mov dword [esp + 0xac], ebx
call fcn.00401220
movzx eax, byte [esp + 0x83]
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x88]
add ecx, eax
mov esi, dword [esp + 0x1c]
movups xmm0, xmmword [esp + 0x58]
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x8c], ecx
inc ebx
neg ecx
mov dword [esp + 0x24], ebx
and ecx, 0x1f
shr edx, cl
lea ecx, [esp + 0x88]
and edx, dword [eax*4 + 0x424890]
mov eax, dword [esp + 0x10]
movzx eax, ax
movups xmmword [esi], xmm0
add edx, eax
add esi, 0x10
mov dword [esp + 0xa4], edx
mov dword [esp + 0x1c], esi
call fcn.00401220
mov edi, dword [esp + 0x30]
cmp eax, 2
jle 0x408430
cmp ebx, edi
jl 0x408d7e
lea ecx, [esp + 0x88]
call fcn.00401220
cmp eax, 2
jg 0x408d73
nop
mov eax, dword [esp + 0x12c]
cmp ebx, eax
jge 0x408d94
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0x9c]
mov edx, dword [ecx + eax*8]
mov esi, dword [ecx + eax*8 + 4]
mov ecx, edx
mov eax, esi
mov dword [esp + 0x40], edx
shrd ecx, eax, 0x10
mov eax, dword [esp + 0xac]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x80], edx
mov edx, dword [ecx + eax*8]
mov edi, dword [ecx + eax*8 + 4]
mov ecx, edx
mov eax, edi
mov dword [esp + 0x3c], edx
shrd ecx, eax, 0x10
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x78], edx
mov dword [esp + 0x1c], edi
mov edx, dword [ecx + eax*8]
mov eax, dword [ecx + eax*8 + 4]
mov ecx, edx
mov dword [esp + 0x14], eax
shrd ecx, eax, 0x10
mov dword [esp + 0x28], edx
mov dword [esp + 0x70], edx
cmp cl, 1
jbe 0x4088dd
cmp dword [esp + 0x130], 0
je 0x4088ba
cmp cl, 0x19
jb 0x4088ba
movzx edi, cl
mov eax, 0x20
sub eax, dword [esp + 0x8c]
lea ecx, [esp + 0x88]
cmp edi, eax
mov edx, edi
cmovae edx, eax
sub edi, edx
call fcn.004011d0
mov ebx, eax
mov ecx, edi
shl ebx, cl
lea ecx, [esp + 0x88]
add ebx, dword [esp + 0x14]
call fcn.00401220
test edi, edi
je 0x408895
mov edx, edi
lea ecx, [esp + 0x88]
call fcn.004011d0
add ebx, eax
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0xb8], eax
jmp 0x408968
movzx edx, cl
lea ecx, [esp + 0x88]
call fcn.004011d0
mov ebx, eax
lea ecx, [esp + 0x88]
add ebx, dword [esp + 0x14]
call fcn.00401220
jmp 0x408899
xor ebx, ebx
test esi, esi
sete bl
test cl, cl
jne 0x40890c
test esi, esi
je 0x4088f5
mov ebx, dword [esp + 0xb4]
jmp 0x40896f
mov ebx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb4]
mov dword [esp + 0xb8], eax
jmp 0x408968
mov edx, 1
lea ecx, [esp + 0x88]
call fcn.004011d0
mov edx, dword [esp + 0xb4]
lea ecx, [ebx + eax]
add ecx, dword [esp + 0x14]
cmp ecx, 3
jne 0x40893e
lea eax, [edx - 1]
xor ebx, ebx
test eax, eax
sete bl
add ebx, eax
jmp 0x408953
mov eax, dword [esp + ecx*4 + 0xb4]
xor ebx, ebx
test eax, eax
sete bl
add ebx, eax
cmp ecx, 1
je 0x408961
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xbc], eax
mov dword [esp + 0xb8], edx
mov dword [esp + 0xb4], ebx
mov eax, dword [esp + 0x38]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x5c], edi
test al, al
je 0x408998
movzx edx, al
lea ecx, [esp + 0x88]
call fcn.004011d0
add edi, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x5c], edi
mov ecx, dword [esp + 0x34]
movzx ecx, cl
movzx eax, al
add eax, ecx
mov dword [esp + 0x10], ecx
cmp eax, 0x14
jb 0x4089bd
lea ecx, [esp + 0x88]
call fcn.00401220
mov ecx, dword [esp + 0x10]
cmp byte [esp + 0x34], 0
mov dword [esp + 0x58], esi
jbe 0x4089dc
mov edx, ecx
lea ecx, [esp + 0x88]
call fcn.004011d0
add esi, eax
mov dword [esp + 0x58], esi
lea ecx, [esp + 0x88]
call fcn.00401220
mov ecx, dword [esp + 0xc8]
mov eax, dword [esp + 0xc0]
add ecx, esi
movzx esi, byte [esp + 0x83]
cmp ebx, ecx
cmova eax, dword [esp + 0xc4]
sub eax, ebx
mov ebx, dword [esp + 0x88]
add eax, ecx
mov edx, ebx
mov dword [esp + 0x64], eax
lea eax, [edi + ecx]
mov edi, dword [esp + 0x8c]
add edi, esi
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x40]
mov ecx, edi
neg ecx
movzx eax, ax
and ecx, 0x1f
shr edx, cl
and edx, dword [esi*4 + 0x424890]
add edx, eax
mov dword [esp + 0x9c], edx
movzx edx, byte [esp + 0x7b]
lea ecx, [edx + edi]
neg ecx
lea eax, [edx + edi]
and ecx, 0x1f
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x3c]
shr ebx, cl
lea ecx, [esp + 0x88]
and ebx, dword [edx*4 + 0x424890]
movzx eax, ax
add ebx, eax
mov dword [esp + 0xac], ebx
call fcn.00401220
movzx eax, byte [esp + 0x73]
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x88]
add ecx, eax
mov dword [esp + 0x8c], ecx
neg ecx
and ecx, 0x1f
shr edx, cl
lea ecx, [esp + 0xd0]
and edx, dword [eax*4 + 0x424890]
mov eax, dword [esp + 0x28]
movzx eax, ax
add edx, eax
mov eax, dword [esp + 0x24]
and eax, 3
mov dword [esp + 0xa4], edx
shl eax, 4
add eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x3c], eax
movups xmm1, xmmword [eax]
movd eax, xmm1
movaps xmm0, xmm1
psrldq xmm0, 4
movd edx, xmm0
add ecx, eax
psrldq xmm1, 8
mov dword [esp + 0x10], eax
mov dword [esp + 0x28], edx
lea ebx, [eax + ebp]
mov dword [esp + 0x40], ecx
mov edi, ebx
lea esi, [edx + eax]
movd eax, xmm1
mov dword [esp + 0x14], esi
sub edi, eax
mov dword [esp + 0x1c], eax
cmp ecx, dword [esp + 0x44]
ja 0x408cfe
mov eax, dword [esp + 0x2c]
lea ecx, [esi + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x408cfe
mov ecx, dword [esp + 0x2c]
lea eax, [esi + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x408cfe
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
movups xmm0, xmmword [eax]
movups xmmword [ebp], xmm0
cmp ecx, 0x10
jbe 0x408ba3
mov edx, dword [esp + 0x18]
lea eax, [ebp + 0x10]
add ecx, 0xfffffff0
movups xmm0, xmmword [edx + 0x10]
lea ebp, [eax + ecx]
mov dword [esp + 0x10], ebp
mov ebp, dword [esp + 0x48]
movups xmmword [eax], xmm0
cmp ecx, 0x10
jle 0x408b9f
mov ecx, dword [esp + 0x10]
add eax, 0x10
add edx, 0x20
movups xmm0, xmmword [edx]
lea edx, [edx + 0x20]
movups xmmword [eax], xmm0
movups xmm0, xmmword [edx - 0x10]
movups xmmword [eax + 0x10], xmm0
add eax, 0x20
cmp eax, ecx
jb 0x408b87
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x18], eax
mov eax, ebx
sub eax, dword [esp + 0x20]
cmp ecx, eax
jbe 0x408c0d
mov eax, ebx
sub eax, dword [esp + 0x50]
cmp ecx, eax
ja 0x408d88
mov ecx, dword [esp + 0x4c]
mov eax, ecx
sub eax, dword [esp + 0x20]
add edi, eax
lea eax, [edi + edx]
cmp eax, ecx
ja 0x408bea
push edx
push edi
push ebx
call fcn.0040c180
add esp, 0xc
jmp 0x408d32
mov esi, ecx
sub esi, edi
push esi
push edi
push ebx
call fcn.0040c180
mov edx, dword [esp + 0x34]
add ebx, esi
mov edi, dword [esp + 0x2c]
add esp, 0xc
mov ecx, dword [esp + 0x1c]
sub edx, esi
mov esi, dword [esp + 0x14]
cmp ecx, 0x10
jb 0x408c4f
lea eax, [edx + ebx]
mov dword [esp + 0x10], eax
movups xmm0, xmmword [edi]
movups xmmword [ebx], xmm0
cmp edx, 0x10
jle 0x408d32
mov edx, dword [esp + 0x10]
lea eax, [ebx + 0x10]
lea ecx, [edi + 0x10]
movups xmm0, xmmword [ecx]
lea ecx, [ecx + 0x20]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ecx - 0x10]
movups xmmword [eax + 0x10], xmm0
add eax, 0x20
cmp eax, edx
jb 0x408c32
jmp 0x408d32
cmp ecx, 8
jae 0x408c83
movzx eax, byte [edi]
mov byte [ebx], al
movzx eax, byte [edi + 1]
mov byte [ebx + 1], al
movzx eax, byte [edi + 2]
mov byte [ebx + 2], al
movzx eax, byte [edi + 3]
add edi, dword [ecx*4 + 0x425170]
mov byte [ebx + 3], al
mov eax, dword [edi]
sub edi, dword [ecx*4 + str._b_b_b_a_b_t_n_v]
mov dword [ebx + 4], eax
jmp 0x408c8d
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov dword [ebx], eax
mov dword [ebx + 4], ecx
cmp edx, 8
jbe 0x408d32
lea ecx, [edx - 8]
add edi, 8
lea edx, [ebx + 8]
mov eax, edx
lea esi, [edx + ecx]
sub eax, edi
cmp eax, 0x10
jge 0x408cc9
sub edi, edx
nop dword [eax]
mov eax, dword [edx + edi]
mov ecx, dword [edx + edi + 4]
mov dword [edx], eax
mov dword [edx + 4], ecx
add edx, 8
cmp edx, esi
jb 0x408cb0
mov esi, dword [esp + 0x14]
jmp 0x408d32
movups xmm0, xmmword [edi]
movups xmmword [edx], xmm0
cmp ecx, 0x10
jle 0x408cf8
add edx, 0x10
lea eax, [edi + 0x10]
nop word [eax + eax]
movups xmm0, xmmword [eax]
lea eax, [eax + 0x20]
movups xmmword [edx], xmm0
movups xmm0, xmmword [eax - 0x10]
movups xmmword [edx + 0x10], xmm0
add edx, 0x20
cmp edx, esi
jb 0x408ce0
mov esi, dword [esp + 0x14]
jmp 0x408d32
push dword [esp + 0x4c]
mov ecx, dword [esp + 0x40]
lea eax, [esp + 0x1c]
push dword [esp + 0x54]
mov edx, dword [esp + 0x34]
push dword [esp + 0x28]
movups xmm0, xmmword [ecx]
mov ecx, ebp
push dword [esp + 0x50]
push eax
sub esp, 0x10
mov eax, esp
movups xmmword [eax], xmm0
call fcn.00407a40
add esp, 0x24
mov esi, eax
cmp esi, 0xffffff88
ja 0x408d8d
mov ebx, dword [esp + 0x24]
lea ecx, [esp + 0x88]
movups xmm0, xmmword [esp + 0x58]
mov eax, ebx
add ebp, esi
and eax, 3
mov dword [esp + 0x48], ebp
add eax, eax
inc ebx
mov dword [esp + 0x24], ebx
movups xmmword [esp + eax*8 + 0xd0], xmm0
call fcn.00401220
cmp eax, 2
jle 0x4087a0
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x12c]
cmp ebx, eax
jge 0x408d98
mov eax, 0xffffffec
jmp 0x409092
mov esi, 0xffffffec
mov eax, esi
jmp 0x409092
mov edi, dword [esp + 0x30]
sub ebx, edi
mov dword [esp + 0x24], ebx
cmp ebx, eax
jge 0x409035
nop word [eax + eax]
mov eax, ebx
lea ecx, [esp + 0xd0]
and eax, 3
shl eax, 4
add eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x38], eax
movups xmm1, xmmword [eax]
movd eax, xmm1
movaps xmm0, xmm1
psrldq xmm0, 4
movd edx, xmm0
add ecx, eax
psrldq xmm1, 8
mov dword [esp + 0x10], eax
mov dword [esp + 0x30], edx
lea ebx, [eax + ebp]
mov dword [esp + 0x3c], ecx
mov edi, ebx
mov dword [esp + 0x40], ebx
lea esi, [edx + eax]
movd eax, xmm1
mov dword [esp + 0x1c], esi
sub edi, eax
mov dword [esp + 0x48], eax
cmp ecx, dword [esp + 0x44]
ja 0x408fe0
mov eax, dword [esp + 0x2c]
lea ecx, [esi + ebp]
add eax, 0xffffffe0
cmp ecx, eax
ja 0x408fe0
mov ecx, dword [esp + 0x2c]
lea eax, [esi + 0x20]
sub ecx, ebp
cmp ecx, eax
jb 0x408fe0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
movups xmm0, xmmword [eax]
movups xmmword [ebp], xmm0
cmp ecx, 0x10
jbe 0x408e91
mov edx, dword [esp + 0x18]
lea eax, [ebp + 0x10]
add ecx, 0xfffffff0
movups xmm0, xmmword [edx + 0x10]
lea ebx, [eax + ecx]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x40]
movups xmmword [eax], xmm0
cmp ecx, 0x10
jle 0x408e8d
mov ecx, dword [esp + 0x10]
add eax, 0x10
add edx, 0x20
movups xmm0, xmmword [edx]
lea edx, [edx + 0x20]
movups xmmword [eax], xmm0
movups xmm0, xmmword [edx - 0x10]
movups xmmword [eax + 0x10], xmm0
add eax, 0x20
cmp eax, ecx
jb 0x408e75
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x18], eax
mov eax, ebx
sub eax, dword [esp + 0x20]
cmp ecx, eax
jbe 0x408efb
mov eax, ebx
sub eax, dword [esp + 0x50]
cmp ecx, eax
ja 0x408d88
mov ecx, dword [esp + 0x4c]
mov eax, ecx
sub eax, dword [esp + 0x20]
add edi, eax
lea eax, [edi + edx]
cmp eax, ecx
ja 0x408ed8
push edx
push edi
push ebx
call fcn.0040c180
add esp, 0xc
jmp 0x409014
mov esi, ecx
sub esi, edi
push esi
push edi
push ebx
call fcn.0040c180
mov edx, dword [esp + 0x3c]
add ebx, esi
mov edi, dword [esp + 0x2c]
add esp, 0xc
mov ecx, dword [esp + 0x48]
sub edx, esi
mov esi, dword [esp + 0x1c]
cmp ecx, 0x10
jb 0x408f3d
lea eax, [edx + ebx]
mov dword [esp + 0x10], eax
movups xmm0, xmmword [edi]
movups xmmword [ebx], xmm0
cmp edx, 0x10
jle 0x409014
mov edx, dword [esp + 0x10]
lea eax, [ebx + 0x10]
lea ecx, [edi + 0x10]
movups xmm0, xmmword [ecx]
lea ecx, [ecx + 0x20]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ecx - 0x10]
movups xmmword [eax + 0x10], xmm0
add eax, 0x20
cmp eax, edx
jb 0x408f20
jmp 0x409014
cmp ecx, 8
jae 0x408f71
movzx eax, byte [edi]
mov byte [ebx], al
movzx eax, byte [edi + 1]
mov byte [ebx + 1], al
movzx eax, byte [edi + 2]
mov byte [ebx + 2], al
movzx eax, byte [edi + 3]
add edi, dword [ecx*4 + 0x425170]
mov byte [ebx + 3], al
mov eax, dword [edi]
sub edi, dword [ecx*4 + str._b_b_b_a_b_t_n_v]
mov dword [ebx + 4], eax
jmp 0x408f7b
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov dword [ebx], eax
mov dword [ebx + 4], ecx
cmp edx, 8
jbe 0x409014
lea eax, [ebx + 8]
add edx, 0xfffffff8
add edi, 8
mov ecx, eax
sub ecx, edi
lea ebx, [eax + edx]
cmp ecx, 0x10
jge 0x408fb5
sub edi, eax
nop dword [eax + eax]
mov ecx, dword [eax + edi]
mov edx, dword [eax + edi + 4]
mov dword [eax], ecx
mov dword [eax + 4], edx
add eax, 8
cmp eax, ebx
jb 0x408fa0
jmp 0x409014
movups xmm0, xmmword [edi]
movups xmmword [eax], xmm0
cmp edx, 0x10
jle 0x409014
add eax, 0x10
lea ecx, [edi + 0x10]
movups xmm0, xmmword [ecx]
lea ecx, [ecx + 0x20]
movups xmmword [eax], xmm0
movups xmm0, xmmword [ecx - 0x10]
movups xmmword [eax + 0x10], xmm0
add eax, 0x20
cmp eax, ebx
jb 0x408fc6
jmp 0x409014
push dword [esp + 0x4c]
mov ecx, dword [esp + 0x3c]
lea eax, [esp + 0x1c]
push dword [esp + 0x54]
mov edx, dword [esp + 0x34]
push dword [esp + 0x28]
movups xmm0, xmmword [ecx]
mov ecx, ebp
push dword [esp + 0x50]
push eax
sub esp, 0x10
mov eax, esp
movups xmmword [eax], xmm0
call fcn.00407a40
add esp, 0x24
mov esi, eax
cmp esi, 0xffffff88
ja 0x408d8d
mov ebx, dword [esp + 0x24]
add ebp, esi
inc ebx
mov dword [esp + 0x24], ebx
cmp ebx, dword [esp + 0x12c]
jl 0x408db0
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0xb4]
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x44]
mov dword [edx + 0x682c], eax
mov eax, dword [esp + 0xb8]
mov dword [edx + 0x6830], eax
mov eax, dword [esp + 0xbc]
mov dword [edx + 0x6834], eax
mov eax, dword [esp + 0x18]
sub edi, eax
sub ebx, ebp
cmp edi, ebx
jbe 0x40907b
mov eax, 0xffffffba
jmp 0x409092
test ebp, ebp
je 0x40908c
push edi
push eax
push ebp
call fcn.0040c180
add esp, 0xc
add ebp, edi
sub ebp, dword [esp + 0x6c]
mov eax, ebp
mov ecx, dword [esp + 0x114]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0040a5d6
add esp, 0x10c
ret