Function at 0x4079bc
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov ebx, dword [esp + 0x6c]
mov esi, dword [ebx + 0x9bb8]
mov ecx, dword [ebx + 0x9bb4]
cmp esi, ecx
jae 0x4079e3
mov eax, esi
not eax
add ecx, eax
mov dword [esp + 0x18], ecx
jmp 0x4079ef
mov eax, dword [ebx + 0x9bb0]
sub eax, esi
mov dword [esp + 0x18], eax
mov eax, dword [ebx]
mov dword [esp], eax
mov eax, dword [ebx + 4]
mov dword [esp + 4], eax
mov ebp, dword [ebx + 0x52c]
mov edx, dword [ebx + 0x528]
lea ecx, [ebx + 0x1bb0]
mov eax, ecx
not eax
mov dword [esp + 0x2c], eax
lea eax, [ebx + 0x1c]
mov dword [esp + 0x28], eax
movdqa xmm3, xmmword [0x40a970]
movdqa xmm4, xmmword [0x40a980]
movdqa xmm5, xmmword [0x40a990]
movdqa xmm7, xmmword [str._b_b_b_b]
lea eax, [ebx + 0x51c]
mov dword [esp + 0x3c], eax
lea eax, [ebx + 0x520]
mov dword [esp + 0x38], eax
lea eax, [ebx + 0x530]
mov dword [esp + 0x34], eax
mov dword [esp + 0x10], ecx
mov edi, ebx
mov eax, dword [ebx + 0x10]
cmp eax, 0xf
ja case.0x407a70.14
mov dword [esp + 0xc], esi
jmp dword [eax*4 + 0x40a9f0]
mov ecx, dword [esp]
mov dword [esp + 8], edx
mov dl, byte [edi + 0x20]
mov eax, dword [edi + 0x24]
jmp 0x4083f4
mov dword [esp + 8], edx
mov eax, dword [esp + 0x28]
mov ebx, dword [eax]
mov ecx, dword [esp]
jmp 0x408404
mov esi, dword [esp]
mov eax, edx
mov ebx, dword [edi + 0x18]
cmp edx, ebx
jae 0x407e79
mov dword [esp + 8], eax
mov edx, dword [esp + 4]
sub edx, 1
jb 0x408949
movzx edi, byte [esi]
mov ecx, eax
shl edi, cl
inc esi
or ebp, edi
add eax, 8
cmp eax, ebx
jb 0x407ab3
jmp 0x407e7d
mov eax, dword [esp + 0x28]
mov ecx, edx
mov ebx, dword [eax]
mov eax, dword [esp + 0x18]
mov edx, dword [esp]
jmp 0x407eb4
mov eax, dword [edi + 0x18]
cmp edx, eax
jae 0x407f41
mov dword [esp + 8], edx
mov esi, dword [esp]
mov ebx, dword [esp + 4]
sub ebx, 1
jb 0x408949
movzx edi, byte [esi]
mov ecx, edx
shl edi, cl
inc esi
or ebp, edi
add edx, 8
cmp edx, eax
jb 0x407afc
jmp 0x407f48
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
mov ebx, edi
jmp 0x407f7c
cmp dword [esp + 0x18], 0
je 0x4084ca
mov ebx, edi
jmp 0x4087f2
cmp edx, 8
jb case.0x407a70.15
add edx, 0xfffffff8
inc dword [esp + 4]
dec dword [esp]
mov ebx, edx
mov dword [edi + 0x9bb8], esi
push edi
call fcn.00408bd9
mov edx, dword [esp + 0x6c]
mov eax, dword [edx + 0x9bb4]
mov esi, dword [edx + 0x9bb8]
cmp esi, eax
jae 0x407e24
mov edi, edx
mov ecx, esi
not ecx
add ecx, eax
jmp 0x407e2e
cmp edx, 2
ja 0x407ba9
mov eax, dword [esp + 4]
test eax, eax
je 0x408ad3
mov ecx, edx
mov edx, eax
mov edi, dword [esp]
movzx eax, byte [edi]
shl eax, cl
dec edx
mov dword [esp + 4], edx
mov edx, ecx
inc edi
mov dword [esp], edi
or ebp, eax
add edx, 8
mov eax, ebp
shr ebp, 3
add edx, 0xfffffffd
mov dword [esp + 8], edx
test al, 1
mov ecx, 0xf
mov edx, 8
cmove ecx, edx
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 8]
mov edi, ebx
mov dword [ebx + 0x524], ecx
shr eax, 1
and eax, 3
mov ecx, dword [esp + 0x10]
jmp dword [eax*4 + 0x40aa30]
mov ecx, edx
and cl, 7
shr ebp, cl
mov ecx, dword [esp + 0x10]
and edx, 0xfffffff8
mov ebx, edi
mov dword [edi + 0x10], 9
jmp 0x407a5e
cmp edx, 0x1f
mov ebx, edi
mov edi, dword [esp]
ja 0x407c2f
mov eax, dword [esp + 4]
sub eax, 1
jb 0x408a03
mov dword [esp + 4], eax
movzx eax, byte [edi]
inc edi
mov ecx, edx
shl eax, cl
or ebp, eax
lea eax, [edx + 8]
cmp edx, 0x18
mov edx, eax
jb 0x407c0a
and ebp, 0xffff
mov dword [ebx + 0x14], ebp
mov dword [esp], edi
jne 0x408769
mov eax, dword [ebx + 0x524]
jmp 0x40876e
mov eax, dword [esp + 4]
test eax, eax
je 0x408ad3
cmp dword [esp + 0x18], 0
mov dword [esp + 8], edx
mov dword [esp + 0x14], ebp
je 0x408515
mov ebp, dword [esp + 0x18]
mov ecx, edi
jmp 0x40884e
cmp edx, 0xd
mov ebx, edi
ja 0x407ca8
mov eax, dword [esp + 4]
sub eax, 1
jb 0x408a1a
mov dword [esp + 4], eax
mov ecx, dword [esp]
movzx eax, byte [ecx]
inc ecx
mov dword [esp], ecx
mov ecx, edx
shl eax, cl
or ebp, eax
lea eax, [edx + 8]
cmp edx, 6
mov edx, eax
jb 0x407c7d
mov eax, ebp
and eax, 0x3fff
mov dword [ebx + 0x14], eax
mov eax, ebp
not eax
test al, 0x1e
je 0x408b61
mov eax, ebp
and eax, 0x3c0
cmp eax, 0x3c0
je 0x408b61
shr ebp, 0xe
add edx, 0xfffffff2
mov dword [ebx + 0x18], 0
mov dword [ebx + 0x10], 0xc
xor eax, eax
jmp 0x407cfa
mov eax, edi
mov ecx, dword [edi + 0x14]
mov eax, dword [edi + 0x18]
shr ecx, 0xa
add ecx, 4
cmp eax, ecx
jae 0x407d61
cmp edx, 2
ja 0x407d2b
mov esi, ebp
mov ebp, dword [esp + 4]
test ebp, ebp
je 0x4089af
mov ebx, edx
mov edi, dword [esp]
movzx edx, byte [edi]
mov ecx, ebx
shl edx, cl
dec ebp
mov dword [esp + 4], ebp
inc edi
mov dword [esp], edi
mov ebp, esi
or ebp, edx
add ebx, 8
jmp 0x407d2d
mov ebx, edx
mov ecx, ebp
and ecx, 7
lea edx, [eax + 1]
mov esi, dword [esp + 0x6c]
mov dword [esi + 0x18], edx
movsx eax, byte [eax + 0x40ab34]
mov dword [esi + eax*4 + 0x1c], ecx
shr ebp, 3
add ebx, 0xfffffffd
mov ecx, dword [esi + 0x14]
mov edi, esi
mov eax, dword [esi + 0x18]
shr ecx, 0xa
add ecx, 4
cmp eax, ecx
mov edx, ebx
jb 0x407cfa
mov ebx, edx
cmp eax, 0x12
ja 0x407d85
lea ecx, [eax + 1]
mov dword [edi + 0x18], ecx
movsx eax, byte [eax + 0x40ab34]
mov dword [edi + eax*4 + 0x1c], 0
mov eax, dword [edi + 0x18]
cmp eax, 0x13
jb 0x407d68
mov eax, dword [esp + 0x3c]
mov dword [eax], 7
mov dword [esp + 0x1c], 0
sub esp, 0x24
lea ecx, [esp + 0x40]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x58]
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x14], eax
movdqa xmm0, xmmword [0x40a950]
movdqu xmmword [esp + 4], xmm0
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.00408c4b
test eax, eax
mov esi, dword [esp + 0xc]
je 0x4080f7
mov eax, dword [esp + 0x6c]
mov dword [eax + 0x10], 0x11
mov ecx, dword [esp + 0x10]
movdqa xmm3, xmmword [0x40a970]
movdqa xmm4, xmmword [0x40a980]
movdqa xmm5, xmmword [0x40a990]
movdqa xmm7, xmmword [str._b_b_b_b]
mov edx, ebx
mov ebx, eax
jmp 0x407a5e
mov dword [esp + 0x14], ebp
mov dword [esp + 8], edx
mov eax, dword [edi + 0x18]
jmp 0x408120
mov edi, edx
mov ecx, dword [edx + 0x9bb0]
sub ecx, esi
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x10]
movdqa xmm3, xmmword [0x40a970]
movdqa xmm4, xmmword [0x40a980]
movdqa xmm5, xmmword [0x40a990]
movdqa xmm7, xmmword [str._b_b_b_b]
mov edx, ebx
cmp esi, eax
jne 0x408a62
mov ebx, edi
mov eax, dword [edi + 0x524]
mov dword [edi + 0x10], eax
cmp eax, 8
je 0x407a5e
jmp 0x408aad
mov edx, dword [esp + 4]
movzx ecx, word [ebx + ebx + 0x40ab48]
and ecx, ebp
mov edi, dword [esp + 0x6c]
add dword [edi + 0x14], ecx
mov ecx, ebx
shr ebp, cl
sub eax, ebx
movzx ebx, byte [edi + 0x21]
mov dword [edi + 0x1c], ebx
mov ecx, dword [edi + 0x28]
mov dword [edi + 0x18], ecx
mov dword [edi + 0x10], 3
mov dword [esp + 4], edx
mov edx, esi
mov ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
cmp ecx, ebx
jae 0x407ee5
mov dword [esp + 8], ecx
mov eax, ecx
mov dword [esp], edx
mov esi, dword [esp + 4]
sub esi, 1
jb 0x408949
movzx edi, byte [edx]
mov ecx, eax
shl edi, cl
inc edx
or ebp, edi
add eax, 8
cmp eax, ebx
jb 0x407ec9
jmp 0x407eeb
mov esi, dword [esp + 4]
mov eax, ecx
mov edi, dword [esp + 0x6c]
mov edi, dword [edi + 0x18]
movzx ebx, word [ebx + ebx + 0x40ab48]
and ebx, ebp
movzx ecx, byte [edi + ebx*4 + 1]
shr ebp, cl
sub eax, ecx
mov ecx, edi
mov dword [esp + 8], eax
movzx eax, byte [edi + ebx*4]
test al, 0x10
jne 0x407f23
test al, 0x40
jne 0x408af6
lea ecx, [ecx + ebx*4]
jmp 0x40846c
and eax, 0xf
mov edi, dword [esp + 0x6c]
mov dword [edi + 0x18], eax
movzx eax, word [ecx + ebx*4 + 2]
mov dword [edi + 0x1c], eax
mov dword [edi + 0x10], 4
jmp 0x40874f
mov ebx, dword [esp + 4]
mov esi, dword [esp]
mov edi, eax
movzx eax, word [eax + eax + 0x40ab48]
and eax, ebp
mov ecx, dword [esp + 0x6c]
add eax, dword [ecx + 0x1c]
mov dword [ecx + 0x1c], eax
mov ecx, edi
sub edx, edi
shr ebp, cl
mov edi, dword [esp + 0x6c]
mov dword [edi + 0x10], 5
mov dword [esp + 4], ebx
mov dword [esp], esi
mov ebx, edi
mov esi, dword [esp + 0xc]
mov ecx, esi
sub ecx, dword [esp + 0x10]
mov dword [esp + 0x24], 0
mov edi, esi
mov dword [esp + 0x30], eax
cmp ecx, eax
jae 0x407f9e
mov esi, dword [ebx + 0x9bb0]
mov dword [esp + 0x24], ecx
mov dword [esp + 8], edx
cmp dword [ebx + 0x14], 0
mov dword [esp + 0x14], ebp
je 0x4080d1
mov eax, dword [esp + 0x24]
sub eax, dword [esp + 0x30]
add esi, eax
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x407fcf
mov ebp, ecx
mov ecx, edx
jmp 0x40807b
cmp edi, dword [ebx + 0x9bb0]
je 0x40809f
mov dword [ebx + 0x9bb8], edi
push ebx
call fcn.00408bd9
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx + 0x9bb4]
mov ebp, dword [ecx + 0x9bb8]
cmp ebp, eax
jae 0x40800d
mov edx, ebp
not edx
add edx, eax
mov dword [esp + 0xc], edx
mov edi, dword [ecx + 0x9bb0]
jmp 0x40801b
mov edi, dword [ecx + 0x9bb0]
mov ecx, edi
sub ecx, ebp
mov dword [esp + 0xc], ecx
cmp ebp, edi
setne dl
mov ecx, dword [esp + 0x10]
cmp eax, ecx
sete dh
or dh, dl
sub edi, ecx
mov dword [esp + 0x18], edi
cmp ecx, eax
mov edi, dword [esp + 0x2c]
lea eax, [eax + edi]
mov ebx, dword [esp + 0x18]
cmovb ebx, eax
test dh, dh
cmovne ebx, dword [esp + 0xc]
cmove ebp, ecx
mov edi, ebp
test ebx, ebx
movdqa xmm3, xmmword [0x40a970]
movdqa xmm4, xmmword [0x40a980]
movdqa xmm5, xmmword [0x40a990]
movdqa xmm7, xmmword [str._b_b_b_b]
je 0x4089d4
mov ebp, ebx
mov ebx, dword [esp + 0x6c]
mov al, byte [esi]
inc esi
mov byte [edi], al
mov edx, ecx
mov eax, ecx
cmp esi, dword [ebx + 0x9bb0]
je 0x40808e
mov eax, esi
inc edi
mov ecx, ebp
dec ecx
dec dword [ebx + 0x14]
mov esi, eax
jne 0x407fc2
jmp 0x4080d9
mov eax, dword [ebx + 0x9bb4]
cmp eax, edx
je 0x407fdb
mov ecx, dword [esp + 0x2c]
add ecx, eax
sub edi, dword [esp + 0x10]
cmp dword [esp + 0x10], eax
mov eax, edi
cmovb eax, ecx
mov ecx, dword [esp + 0x10]
mov edi, ecx
mov ebp, eax
test eax, eax
jne 0x40807b
jmp 0x407fdb
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x18], ecx
mov dword [ebx + 0x10], 0
mov esi, edi
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 8]
mov ecx, edx
mov edx, eax
jmp 0x407a5e
mov eax, dword [esp + 0x3c]
cmp dword [eax], 0
je 0x407ddc
mov dword [esp + 0x14], ebp
mov dword [esp + 8], ebx
mov edi, dword [esp + 0x6c]
mov dword [edi + 0x18], 0
mov dword [edi + 0x10], 0xd
xor eax, eax
mov ebx, dword [edi + 0x14]
mov esi, ebx
and esi, 0x1f
shr ebx, 5
and ebx, 0x1f
lea edi, [esi + ebx]
add edi, 0x102
cmp eax, edi
mov ebp, dword [esp + 4]
jae 0x408307
mov dword [esp + 0x24], eax
mov edx, dword [esp]
mov dword [esp + 4], ebp
mov dword [esp + 0x30], edi
mov eax, dword [esp + 0x3c]
mov esi, dword [eax]
mov ebx, dword [esp + 8]
cmp ebx, esi
jae 0x40819b
mov eax, ebx
mov dword [esp], edx
mov ebp, dword [esp + 4]
mov edi, dword [esp + 0x6c]
mov ecx, dword [esp + 0xc]
sub ebp, 1
jb 0x408982
movzx ebx, byte [edx]
mov ecx, eax
shl ebx, cl
inc edx
or dword [esp + 0x14], ebx
mov ebx, dword [esp + 8]
mov ecx, dword [esp + 0xc]
mov edi, dword [esp + 0x6c]
add eax, 8
cmp eax, esi
jb 0x408171
jmp 0x4081a5
mov ebp, dword [esp + 4]
mov eax, ebx
mov edi, dword [esp + 0x6c]
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx]
movzx esi, word [esi + esi + 0x40ab48]
and esi, dword [esp + 0x14]
movzx ebx, byte [ecx + esi*4 + 1]
mov dword [esp], ebx
movzx ecx, word [ecx + esi*4 + 2]
cmp ecx, 0xf
ja 0x4081ee
mov ebx, ecx
mov ecx, dword [esp]
shr dword [esp + 0x14], cl
sub eax, ecx
mov esi, dword [esp + 0x24]
lea ecx, [esi + 1]
mov dword [edi + 0x18], ecx
mov dword [edi + esi*4 + 0x1c], ebx
mov ecx, dword [edi + 0x18]
mov dword [esp + 8], eax
jmp 0x4082dd
lea edi, [ecx - 0xe]
mov dword [esp + 0x40], ecx
cmp cx, 0x12
sete byte [esp + 0x23]
mov esi, 7
cmove edi, esi
mov dword [esp + 0x4c], edi
mov ebx, dword [esp]
lea ecx, [edi + ebx]
mov dword [esp + 8], ecx
cmp eax, ecx
jae 0x408254
mov edi, eax
mov dword [esp + 4], edx
mov ecx, ebp
sub ecx, 1
jb 0x408a4a
mov dword [esp], ecx
mov ecx, edi
mov edi, dword [esp + 4]
mov esi, ebx
movzx ebx, byte [edi]
shl ebx, cl
inc edi
mov dword [esp + 4], edi
or dword [esp + 0x14], ebx
mov ebx, esi
mov edi, ecx
mov ecx, dword [esp]
add edi, 8
cmp edi, dword [esp + 8]
jb 0x408220
jmp 0x40825c
mov ecx, ebp
mov dword [esp + 4], edx
mov edi, eax
mov dword [esp], ecx
mov ecx, ebx
mov edx, dword [esp + 0x14]
shr edx, cl
xor eax, eax
mov cl, byte [esp + 0x23]
mov al, cl
lea ebx, [eax*8 + 3]
mov ecx, dword [esp + 0x4c]
movzx eax, word [ecx + ecx + 0x40ab48]
and eax, edx
shr edx, cl
add eax, ebx
mov ebx, edi
sub ebx, dword [esp + 8]
mov ebp, dword [esp + 0x24]
lea ecx, [eax + ebp]
cmp ecx, dword [esp + 0x30]
ja 0x408b31
cmp word [esp + 0x40], 0x10
jne 0x4082af
test ebp, ebp
je 0x408b31
xor ecx, ecx
cmp word [esp + 0x40], 0x10
mov edi, dword [esp + 0x6c]
jne 0x4082c1
mov ecx, dword [edi + ebp*4 + 0x18]
mov dword [esp + 0x14], edx
mov dword [esp + 8], ebx
mov dword [edi + ebp*4 + 0x1c], ecx
inc ebp
dec eax
jne 0x4082c9
mov dword [edi + 0x18], ebp
mov ecx, ebp
mov ebp, dword [esp]
mov edx, dword [esp + 4]
mov ebx, dword [edi + 0x14]
mov esi, ebx
and esi, 0x1f
shr ebx, 5
and ebx, 0x1f
lea edi, [esi + ebx]
add edi, 0x102
mov dword [esp], edx
mov dword [esp + 4], ebp
mov dword [esp + 0x24], ecx
cmp ecx, edi
jb 0x40814e
mov dword [esp + 4], ebp
mov eax, dword [esp + 0x38]
xor ecx, ecx
mov dword [eax], ecx
mov dword [esp + 0x1c], ecx
mov ecx, 0x101
lea edi, [esi + ecx]
mov dword [esp + 0x48], 9
mov dword [esp + 0x44], 6
lea eax, [esp + 0x1c]
push eax
push dword [esp + 0x38]
lea eax, [esp + 0x50]
push eax
lea eax, [esp + 0x60]
push eax
push 0x40aa7e
push 0x40aa40
push ecx
push edi
push dword [esp + 0x48]
call fcn.00408c4b
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x408a7f
test eax, eax
jne 0x408a7f
mov ebp, ecx
inc ebx
mov eax, dword [esp + 0x28]
lea eax, [eax + edi*4]
lea ecx, [esp + 0x1c]
push ecx
push dword [esp + 0x38]
lea ecx, [esp + 0x4c]
push ecx
lea ecx, [esp + 0x5c]
push ecx
push 0x40aaf8
push 0x40aabc
push 0
push ebx
push eax
call fcn.00408c4b
test eax, eax
jne 0x408a7f
mov eax, dword [esp + 0x44]
test eax, eax
jne 0x4083b3
test esi, esi
jne 0x408a7f
mov edi, dword [esp + 0x6c]
mov edx, ebp
mov byte [edi + 0x20], dl
mov byte [edi + 0x21], al
mov eax, dword [esp + 0x54]
mov dword [edi + 0x24], eax
mov ecx, dword [esp + 0x50]
mov dword [edi + 0x28], ecx
movdqa xmm3, xmmword [0x40a970]
movdqa xmm4, xmmword [0x40a980]
movdqa xmm5, xmmword [0x40a990]
movdqa xmm7, xmmword [str._b_b_b_b]
mov ecx, dword [esp]
mov ebp, dword [esp + 0x14]
movzx ebx, dl
mov dword [edi + 0x1c], ebx
mov dword [edi + 0x18], eax
mov dword [edi + 0x10], 1
mov eax, dword [esp + 8]
cmp eax, ebx
jae 0x408431
mov dword [esp], ecx
mov edx, ecx
mov esi, dword [esp + 4]
sub esi, 1
jb 0x408949
movzx edi, byte [edx]
mov ecx, eax
shl edi, cl
inc edx
or ebp, edi
add eax, 8
cmp eax, ebx
jb 0x408415
jmp 0x408437
mov edx, ecx
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x6c]
mov edi, dword [edi + 0x18]
movzx ebx, word [ebx + ebx + 0x40ab48]
and ebx, ebp
movzx ecx, byte [edi + ebx*4 + 1]
shr ebp, cl
sub eax, ecx
mov dword [esp + 8], eax
movzx eax, byte [edi + ebx*4]
test eax, eax
je 0x408482
test al, 0x10
jne 0x4084a1
test al, 0x40
jne 0x40873c
lea ecx, [edi + ebx*4]
mov edi, dword [esp + 0x6c]
mov dword [edi + 0x1c], eax
movzx eax, word [ecx + 2]
lea eax, [ecx + eax*4]
mov dword [edi + 0x18], eax
jmp 0x40874f
movzx eax, word [edi + ebx*4 + 2]
mov ebx, dword [esp + 0x6c]
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x10], 6
mov dword [esp + 4], esi
mov dword [esp], edx
jmp 0x408758
and eax, 0xf
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 0x18], eax
movzx eax, word [edi + ebx*4 + 2]
mov edi, ecx
mov dword [ecx + 0x14], eax
mov dword [ecx + 0x10], 2
mov dword [esp + 4], esi
mov dword [esp], edx
mov ebx, ecx
jmp 0x408758
mov ebx, edi
cmp esi, dword [edi + 0x9bb0]
je 0x4088d6
mov eax, ebx
mov ebx, edx
mov dword [eax + 0x9bb8], esi
push eax
call fcn.00408bd9
mov edx, dword [esp + 0x6c]
mov eax, dword [edx + 0x9bb4]
mov esi, dword [edx + 0x9bb8]
cmp esi, eax
mov dword [esp + 0x14], ebp
jae 0x40877e
mov ecx, esi
not ecx
add ecx, eax
mov edi, dword [edx + 0x9bb0]
jmp 0x408788
cmp esi, dword [edi + 0x9bb0]
je 0x40890e
mov ecx, edi
mov dword [ecx + 0x9bb8], esi
push ecx
call fcn.00408bd9
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx + 0x9bb4]
mov ebp, dword [ecx + 0x9bb8]
cmp ebp, eax
jae 0x408808
mov edi, ebp
not edi
add edi, eax
mov ecx, dword [ecx + 0x9bb0]
jmp 0x408812
cmp byte [0x4400f0], 0
jne 0x408700
mov dword [esp + 0x1c], 0
mov eax, 0xfffffb80
movdqa xmm0, xmmword [0x40a960]
movdqa xmm6, xmm7
movdqa xmm1, xmm0
pxor xmm1, xmm3
movdqa xmm2, xmm0
paddd xmm2, xmmword [0x40a9b0]
pxor xmm2, xmm3
movdqa xmm7, xmm3
movdqa xmm3, xmmword [0x40a9c0]
pcmpgtd xmm3, xmm2
movdqa xmm2, xmm6
psubd xmm2, xmm3
movdqa xmm3, xmm5
pcmpgtd xmm3, xmm1
pcmpgtd xmm1, xmm4
paddd xmm3, xmm6
pand xmm3, xmm1
pandn xmm1, xmm2
por xmm1, xmm3
movdqa xmm3, xmm7
movdqu xmmword [eax + 0x440574], xmm1
paddd xmm0, xmmword [0x40a9d0]
add eax, 0x10
jne 0x40857e
lea eax, [esp + 0x1c]
push eax
push 0x440578
push 0x4170b0
push 0x440574
push 0x40aa7e
push 0x40aa40
push 0x101
push 0x120
push 0x4400f4
call fcn.00408c4b
movdqa xmm3, xmmword [0x40a970]
mov eax, 0xffffff80
movdqa xmm0, xmmword [0x40a960]
movdqa xmm4, xmmword [0x40a9d0]
movdqa xmm5, xmmword [0x40a9e0]
movdqa xmm2, xmm0
pxor xmm2, xmm3
movdqa xmm1, xmm5
pcmpgtd xmm1, xmm2
movd ecx, xmm1
test cl, 1
je 0x40865d
mov dword [eax + 0x440174], 5
pextrw ecx, xmm1, 2
test cl, 1
je 0x408671
mov dword [eax + 0x440178], 5
pextrw ecx, xmm1, 4
test cl, 1
je 0x408685
mov dword [eax + 0x44017c], 5
pextrw ecx, xmm1, 6
test cl, 1
je 0x408699
mov dword [eax + 0x440180], 5
paddd xmm0, xmm4
add eax, 0x10
jne 0x40863a
lea eax, [esp + 0x1c]
push eax
push 0x440578
push 0x4170b4
push 0x440df8
push 0x40aaf8
push 0x40aabc
push 0
push 0x1e
push 0x4400f4
call fcn.00408c4b
movdqa xmm3, xmmword [0x40a970]
inc byte [0x4400f0]
mov ecx, dword [esp + 0x10]
movdqa xmm4, xmmword [0x40a980]
movdqa xmm5, xmmword [0x40a990]
movdqa xmm7, xmmword [str._b_b_b_b]
mov edi, dword [esp + 0x6c]
mov edx, dword [esp + 8]
mov al, byte [0x4170b0]
mov ebx, edi
mov byte [edi + 0x20], al
mov al, byte [0x4170b4]
mov byte [edi + 0x21], al
mov eax, dword [0x440574]
mov dword [edi + 0x24], eax
mov eax, dword [0x440df8]
mov dword [edi + 0x28], eax
mov dword [edi + 0x10], 0
jmp 0x407a5e
mov ebx, edi
mov dword [edi + 0x10], 0xb
jmp 0x407a5e
test al, 0x20
je 0x408af6
mov edi, dword [esp + 0x6c]
mov dword [edi + 0x10], 7
mov dword [esp + 4], esi
mov dword [esp], edx
mov ebx, edi
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 8]
jmp 0x407a5e
mov eax, 0xa
mov ecx, dword [esp + 0x10]
mov dword [ebx + 0x10], eax
xor edx, edx
xor ebp, ebp
jmp 0x407a5e
mov edi, dword [edx + 0x9bb0]
mov ecx, edi
sub ecx, esi
movdqa xmm3, xmmword [0x40a970]
movdqa xmm4, xmmword [0x40a980]
movdqa xmm5, xmmword [0x40a990]
movdqa xmm7, xmmword [str._b_b_b_b]
cmp esi, edi
setne dl
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x10]
cmp eax, esi
sete dh
or dh, dl
sub edi, esi
cmp esi, eax
mov ebp, edi
mov edi, dword [esp + 0x2c]
lea eax, [eax + edi]
cmovb ebp, eax
test dh, dh
cmovne ebp, ecx
mov ecx, esi
mov esi, dword [esp + 0xc]
cmove esi, ecx
test ebp, ebp
je 0x408b94
mov dword [esp + 0x18], ebp
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x6c]
mov edx, ebx
mov ebx, eax
mov al, byte [ebx + 0x18]
mov byte [esi], al
inc esi
dec dword [esp + 0x18]
mov dword [ebx + 0x10], 0
jmp 0x407a5e
mov ecx, dword [ecx + 0x9bb0]
mov edi, ecx
sub edi, ebp
cmp ebp, ecx
setne dl
mov esi, dword [esp + 0x10]
cmp eax, esi
sete dh
or dh, dl
sub ecx, esi
cmp esi, eax
mov ebx, dword [esp + 0x2c]
lea eax, [eax + ebx]
cmovb ecx, eax
test dh, dh
cmovne ecx, edi
cmove ebp, esi
mov esi, ebp
test ecx, ecx
je 0x408baa
mov edi, ecx
mov ebp, ecx
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0xc], esi
cmp ebp, eax
mov edi, ebp
mov esi, eax
cmovb esi, ebp
mov ebp, eax
mov eax, dword [ecx + 0x14]
cmp eax, esi
cmovb esi, eax
push esi
mov ebx, dword [esp + 4]
push ebx
push dword [esp + 0x14]
call fcn.00406f3e
mov eax, dword [esp + 0x6c]
add ebx, esi
mov dword [esp], ebx
sub ebp, esi
mov dword [esp + 4], ebp
add dword [esp + 0xc], esi
sub edi, esi
mov dword [esp + 0x18], edi
sub dword [eax + 0x14], esi
mov esi, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
movdqa xmm3, xmmword [0x40a970]
movdqa xmm4, xmmword [0x40a980]
movdqa xmm5, xmmword [0x40a990]
movdqa xmm7, xmmword [str._b_b_b_b]
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 8]
mov ebx, eax
jne 0x407a5e
mov eax, dword [ebx + 0x524]
mov dword [ebx + 0x10], eax
jmp 0x407a5e
mov eax, dword [ebx + 0x9bb4]
cmp eax, ecx
je 0x4084d8
mov ecx, dword [esp + 0x2c]
add ecx, eax
sub esi, dword [esp + 0x10]
cmp dword [esp + 0x10], eax
mov eax, esi
cmovb eax, ecx
mov ecx, dword [esp + 0x10]
mov esi, ecx
mov dword [esp + 0x18], eax
test eax, eax
jne 0x4087f2
jmp 0x4084d8
mov eax, dword [edi + 0x9bb4]
cmp eax, ecx
je 0x408940
mov edx, ecx
mov ecx, dword [esp + 0x2c]
add ecx, eax
sub esi, edx
cmp edx, eax
mov ebp, esi
cmovb ebp, ecx
mov esi, edx
test ebp, ebp
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x6c]
jne 0x40884e
jmp 0x408523
mov ecx, dword [esp + 0x6c]
jmp 0x408523
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
lea eax, [eax + ecx*8]
mov edx, dword [esp]
add edx, ecx
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 0x52c], ebp
mov dword [ecx + 0x528], eax
mov dword [ecx + 4], 0
mov dword [ecx], edx
mov eax, dword [esp + 0xc]
mov dword [ecx + 0x9bb8], eax
push ecx
jmp 0x408a39
mov edx, dword [esp + 4]
lea eax, [ebx + edx*8]
mov esi, dword [esp]
add esi, edx
mov edx, dword [esp + 0x14]
mov dword [edi + 0x52c], edx
mov dword [edi + 0x528], eax
mov dword [edi + 4], 0
mov dword [edi], esi
mov dword [edi + 0x9bb8], ecx
jmp 0x4089d1
mov dword [edi + 0x52c], esi
mov dword [edi + 0x528], edx
mov dword [edi + 4], 0
mov eax, dword [esp]
mov dword [edi], eax
mov eax, dword [esp + 0xc]
mov dword [edi + 0x9bb8], eax
push edi
jmp 0x408a39
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 0x52c], eax
mov eax, dword [esp + 8]
mov dword [ecx + 0x528], eax
mov eax, dword [esp + 4]
mov dword [ecx + 4], eax
mov eax, dword [esp]
mov dword [ecx], eax
mov dword [ecx + 0x9bb8], edi
jmp 0x40897c
mov dword [ebx + 0x52c], ebp
mov dword [ebx + 0x528], edx
mov dword [ebx + 4], 0
mov dword [ebx], edi
jmp 0x408a32
mov dword [ebx + 0x52c], ebp
mov dword [ebx + 0x528], edx
mov dword [ebx + 4], 0
mov eax, dword [esp]
mov dword [ebx], eax
mov dword [ebx + 0x9bb8], esi
push ebx
call fcn.00408bd9
xor eax, eax
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret 4
lea eax, [eax + ebp*8]
add edx, ebp
mov ecx, dword [esp + 0x6c]
mov esi, dword [esp + 0x14]
mov dword [ecx + 0x52c], esi
jmp 0x408963
mov dword [edi + 0x52c], ebp
mov dword [edi + 0x528], edx
mov eax, dword [esp + 4]
mov dword [edi + 4], eax
mov eax, dword [esp]
mov dword [edi], eax
jmp 0x4089d1
mov eax, dword [esp + 0x6c]
mov dword [eax + 0x10], 0x11
mov ecx, dword [esp + 0x14]
mov dword [eax + 0x52c], ecx
mov ecx, dword [esp + 8]
mov dword [eax + 0x528], ecx
mov ecx, dword [esp + 4]
mov dword [eax + 4], ecx
mov ecx, dword [esp]
jmp 0x408b52
mov dword [ebx + 0x52c], ebp
mov dword [ebx + 0x528], edx
mov eax, dword [esp + 4]
mov dword [ebx + 4], eax
mov eax, dword [esp]
mov dword [ebx], eax
push ebx
call fcn.00408bd9
xor eax, eax
inc eax
jmp 0x408a40
mov dword [edi + 0x52c], ebp
mov dword [edi + 0x528], edx
mov dword [edi + 4], 0
mov eax, dword [esp]
mov dword [edi], eax
mov dword [edi + 0x9bb8], esi
jmp 0x4089d1
mov dword [esp + 4], esi
mov dword [esp], edx
mov edi, dword [esp + 0x6c]
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov dword [edi + 0x10], 0x11
mov dword [edi + 0x52c], ebp
mov dword [edi + 0x528], edx
mov eax, dword [esp + 4]
mov dword [edi + 4], eax
mov eax, dword [esp]
mov dword [edi], eax
mov dword [edi + 0x9bb8], esi
push edi
jmp 0x408b87
mov eax, dword [esp + 0x6c]
mov dword [eax + 0x10], 0x11
mov dword [eax + 0x52c], edx
mov dword [eax + 0x528], ebx
mov ecx, dword [esp]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 4]
mov dword [eax], ecx
mov ecx, dword [esp + 0xc]
mov dword [eax + 0x9bb8], ecx
push eax
jmp 0x408b87
mov dword [ebx + 0x10], 0x11
mov dword [ebx + 0x52c], ebp
mov dword [ebx + 0x528], edx
mov eax, dword [esp + 4]
mov dword [ebx + 4], eax
mov eax, dword [esp]
mov dword [ebx], eax
mov dword [ebx + 0x9bb8], esi
push ebx
call fcn.00408bd9
xor eax, eax
dec eax
jmp 0x408a40
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x6c]
mov dword [ecx + 0x52c], eax
mov dword [ecx + 0x528], ebx
jmp 0x408bc2
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x14]
mov dword [ecx + 0x52c], eax
mov eax, dword [esp + 8]
mov dword [ecx + 0x528], eax
mov eax, dword [esp + 4]
mov dword [ecx + 4], eax
mov eax, dword [esp]
mov dword [ecx], eax
mov dword [ecx + 0x9bb8], esi
jmp 0x40897c