Function at 0x408390
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xcf2552
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xcc
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ebx
mov edx, dword [ebp + 0x10]
movsx eax, byte [edx + 0x15]
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x4084bb
push 0xd27f00
lea ecx, [ebp - 0x64]
call fcn.00407854
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x8c]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], ecx
call 0xcbb80d
mov dword [ebp - 4], 1
mov dword [ebp - 0x8c], 0xe442a8
lea esi, [ebp - 0x80]
xor eax, eax
mov dword [ebp - 0x68], 0xf
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0x7c], al
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x30], esi
test ebx, ebx
lea edi, [ebp - 0x64]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], eax
jae 0x40842f
call 0xcee3b1
mov ebx, dword [ebp - 0x50]
lea eax, [ebp - 0x80]
lea edx, [ebp - 0x64]
cmp ebx, 0xffffffff
jbe 0x40843f
mov ebx, 0xffffffff
mov dword [ebp - 0x3c], ebx
cmp eax, edx
je 0x408958
mov dword [ebp - 0x40], ebx
cmp ebx, 0xfffffffe
jbe 0x40845a
call 0xcee372
mov ebx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x68]
cmp esi, ebx
jb 0x408850
test ebx, ebx
je 0x408831
test ebx, ebx
ja 0x4087ce
mov dword [ebp - 4], 0
push 0xe4a780
mov eax, dword [ebp - 0x38]
lea edx, [ebp - 0x8c]
mov dword [eax], 0xe442cc
push edx
call 0xcbba8a
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x4c]
cmp eax, 0x10
jae 0x4087c0
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x4c], 0xf
xor eax, eax
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x60], al
mov eax, dword [ebp + 0xc]
mov ebx, edx
test eax, eax
je 0x408e6f
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x4084d7
call 0xcbb7f4
jmp 0x40850f
mov eax, dword [edx + 8]
movsx ecx, byte [eax + 0x15]
test ecx, ecx
je 0x4084f6
mov ecx, dword [edx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
je 0x408a3f
mov dword [ebp + 0x10], ecx
jmp 0x40850f
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
jne 0x40850c
mov eax, dword [eax]
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x408500
mov dword [ebp + 0x10], eax
mov eax, dword [ebx]
movsx edx, byte [eax + 0x15]
mov edi, ebx
test edx, edx
je 0x408520
mov esi, dword [ebx + 8]
jmp 0x408535
mov edx, dword [ebx + 8]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x40852f
mov esi, eax
jmp 0x408535
mov edi, dword [ebp + 0x10]
mov esi, dword [edi + 8]
cmp edi, ebx
je 0x408d8f
mov dword [eax + 4], edi
mov eax, dword [ebx]
mov dword [edi], eax
cmp edi, dword [ebx + 8]
jne 0x40854d
mov ecx, edi
jmp 0x40856a
mov ecx, dword [edi + 4]
movsx eax, byte [esi + 0x15]
test eax, eax
je 0x408d87
mov dword [ecx], esi
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
mov edx, dword [ebx + 8]
mov dword [edx + 4], edi
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [eax + 4]
cmp ebx, dword [eax + 4]
je 0x408d7f
mov eax, dword [ebx + 4]
cmp ebx, dword [eax]
je 0x408588
mov dword [eax + 8], edi
jmp 0x40858a
mov dword [eax], edi
mov eax, dword [ebx + 4]
mov dword [edi + 4], eax
movzx eax, byte [edi + 0x14]
movzx edx, byte [ebx + 0x14]
mov byte [edi + 0x14], dl
mov byte [ebx + 0x14], al
movsx eax, byte [ebx + 0x14]
cmp eax, 1
je 0x408a66
push ebx
call 0xcba085
pop ecx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 8]
test eax, eax
je 0x4085c2
add eax, 0xffffffff
mov dword [edx + 8], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
mov dword [eax], edx
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [ebp - 0x94]
test edx, edx
ja 0x4086db
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jae 0x4086c7
mov dword [edx + 0x18], 0xf
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x14], 0
mov eax, dword [ebp - 0x98]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x40866c
mov eax, dword [eax + 4]
jmp 0x40866f
add eax, 4
mov ecx, dword [ebp - 0xa0]
mov byte [eax], 0
mov edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x9c]
mov dword [edx + 4], eax
mov ebx, dword [ebp - 0x98]
mov dword [ebx + 0x18], ecx
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x94]
mov dword [edi + 0x14], esi
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x4086b2
mov edx, dword [edx + 4]
jmp 0x4086b5
add edx, 4
mov eax, dword [ebp - 0x94]
mov byte [edx + eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x40846d
push dword [edx + 4]
call 0xcba085
pop ecx
mov edx, dword [ebp - 0x98]
jmp 0x408645
mov ecx, dword [ebp - 0x98]
mov eax, dword [ecx + 0x18]
cmp eax, 0x10
jb 0x4086ee
mov ecx, dword [ecx + 4]
jmp 0x4086f1
add ecx, 4
mov ebx, dword [ebp - 0xa0]
movzx eax, byte [ebp - 0xb4]
mov byte [ebp - 0xb8], al
push edx
add ebx, 1
push ecx
push ebx
push dword [ebp - 0x9c]
call 0xcbbad4
add esp, 0x10
jmp 0x408633
push dword [ebp - 0x60]
call 0xcba085
pop ecx
jmp 0x4084a9
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x18]
cmp ecx, 0x10
jb 0x4087de
mov ebx, dword [ebx + 4]
jmp 0x4087e1
add ebx, 4
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x4087f1
mov edx, dword [edx + 4]
jmp 0x4087f4
add edx, 4
add edx, dword [ebp - 0x28]
push dword [ebp - 0x3c]
movzx eax, byte [ebp - 0x44]
mov byte [ebp - 0x48], al
push edx
push ecx
push ebx
call 0xcbbad4
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x30]
mov dword [eax + 0x14], ecx
mov eax, dword [ebp - 0x30]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x408825
mov eax, dword [eax + 4]
jmp 0x408828
add eax, 4
mov byte [eax + ecx], 0
jmp 0x408475
mov dword [ebp - 0x6c], 0
cmp esi, 0x10
jb 0x408842
mov eax, dword [ebp - 0x7c]
jmp 0x408845
lea eax, [ebp - 0x7c]
mov byte [eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x40846d
mov edx, dword [ebp - 0x6c]
mov dword [ebp - 0xac], ebx
mov ecx, ebx
lea eax, [ebp - 0x80]
or ecx, 0xf
cmp ecx, 0xfffffffe
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], edx
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0xa0], ecx
jbe 0x40888c
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xa0], ebx
jmp 0x4088a3
mov ebx, ecx
mov ecx, esi
shr ecx, 1
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
cmp ecx, edx
ja 0x408935
mov dword [ebp - 0x9c], 0
mov dword [ebp - 4], 2
mov eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
jne 0x4088cf
xor eax, eax
mov dword [ebp - 0xb0], eax
jmp 0x408916
mov ecx, eax
xor edx, edx
mov eax, 0xffffffff
div ecx
cmp eax, 1
jae 0x408916
mov dword [ebp - 0xbc], 0
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0xcc]
call 0xcbb81e
mov dword [ebp - 0xcc], 0xe40cb4
lea eax, [ebp - 0xcc]
push 0xe4a720
push eax
call 0xcbba8a
mov eax, dword [ebp - 0xb0]
push eax
call 0xcba01b
pop ecx
mov dword [ebp - 0x9c], eax
mov dword [ebp - 4], 1
jmp 0x408625
mov eax, ecx
neg eax
add eax, 0xfffffffe
cmp esi, eax
ja 0x4088a3
lea eax, [esi + ecx]
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xa0], eax
jmp 0x4088a3
mov edx, dword [ebp - 0x6c]
cmp edx, ebx
jae 0x408967
call 0xcee3b1
mov edx, dword [ebp - 0x6c]
mov eax, edx
sub eax, ebx
cmp eax, 0xffffffff
mov esi, eax
jb 0x408977
mov esi, 0xffffffff
test esi, esi
ja 0x4089e8
test edx, edx
jae 0x408987
call 0xcee3b1
mov edx, dword [ebp - 0x6c]
test edx, edx
mov ebx, edx
jb 0x408992
mov ebx, 0
test ebx, ebx
jbe 0x408475
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x4089aa
mov esi, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x7c]
jmp 0x4089b0
lea esi, [ebp - 0x7c]
lea eax, [ebp - 0x7c]
mov byte [ebp - 0xa8], 0
add eax, ebx
sub edx, ebx
push edx
push eax
push ecx
push esi
call 0xcbbb4f
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, ebx
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x4089dc
mov eax, dword [ebp - 0x7c]
jmp 0x4089df
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
jmp 0x408475
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x4089f8
mov edi, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x7c]
jmp 0x4089fe
lea edi, [ebp - 0x7c]
lea edx, [ebp - 0x7c]
mov byte [ebp - 0xa4], 0
add edi, ebx
sub ecx, ebx
add ebx, esi
add ebx, edx
sub eax, esi
push eax
push ebx
push ecx
push edi
call 0xcbbb4f
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, esi
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x408a30
mov eax, dword [ebp - 0x7c]
jmp 0x408a33
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
mov edx, dword [ebp - 0x6c]
jmp 0x40897b
cmp edx, dword [ecx + 8]
jne 0x4084f1
mov dword [ebp + 0x10], ecx
mov edx, ecx
mov ecx, dword [ecx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
jne 0x4084f1
cmp edx, dword [ecx + 8]
je 0x408a48
jmp 0x4084f1
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp esi, dword [edx + 4]
je 0x408a7a
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x408a83
mov byte [esi + 0x14], 1
jmp 0x4085ab
mov edi, dword [ecx]
cmp esi, edi
je 0x408c11
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x408bc0
movsx eax, byte [edi + 0x15]
test eax, eax
jne 0x408ac6
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
mov dword [ebp - 0xb0], eax
cmp edx, 1
jne 0x408b3c
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x408ae1
mov byte [edi + 0x14], 0
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
mov esi, ecx
mov ecx, dword [ecx + 4]
cmp esi, dword [edx + 4]
je 0x408a7a
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x408a83
jmp 0x408a7a
movzx eax, byte [ecx + 0x14]
mov byte [edi + 0x14], al
mov edx, 1
mov byte [ecx + 0x14], dl
mov edi, dword [edi]
mov byte [edi + 0x14], dl
mov eax, dword [ecx]
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edi, dword [eax + 8]
movsx edx, byte [edi + 0x15]
test edx, edx
je 0x408b37
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x408b32
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x408b24
mov dword [edx], eax
jmp 0x408b27
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov dword [ecx + 4], eax
jmp 0x408a7a
mov dword [edx + 4], eax
jmp 0x408b27
mov dword [edi + 4], ecx
jmp 0x408b07
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x408ae1
mov eax, dword [ebp - 0xb0]
mov byte [eax + 0x14], 1
mov eax, dword [edi + 8]
mov byte [edi + 0x14], 0
mov edx, dword [eax]
mov dword [edi + 8], edx
mov edx, dword [eax]
mov dword [ebp - 0xb0], eax
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x408bbb
mov edx, dword [ebp - 0xb0]
mov eax, dword [edi + 4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp edi, dword [edx + 4]
je 0x408bb0
mov eax, dword [edi + 4]
cmp edi, dword [eax]
je 0x408b96
mov edx, dword [ebp - 0xb0]
mov dword [eax + 8], edx
jmp 0x408b9e
mov edx, dword [ebp - 0xb0]
mov dword [eax], edx
mov eax, dword [ebp - 0xb0]
mov dword [eax], edi
mov dword [edi + 4], eax
mov edi, dword [ecx]
jmp 0x408ae1
mov eax, dword [ebp - 0xb0]
mov dword [edx + 4], eax
jmp 0x408b9e
mov dword [edx + 4], edi
jmp 0x408b6d
mov byte [edi + 0x14], 1
mov eax, dword [ecx]
mov byte [ecx + 0x14], 0
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edx, dword [eax + 8]
movsx edi, byte [edx + 0x15]
test edi, edi
je 0x408c0c
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x408c07
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x408bf7
mov dword [edx], eax
jmp 0x408bfa
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov edi, dword [ecx]
mov dword [ecx + 4], eax
jmp 0x408a99
mov dword [edx + 4], eax
jmp 0x408bfa
mov dword [edx + 4], ecx
jmp 0x408bda
mov edi, dword [ecx + 8]
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x408d2f
movsx eax, byte [edi + 0x15]
test eax, eax
jne 0x408ac6
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
mov dword [ebp - 0xb0], eax
cmp edx, 1
jne 0x408ca7
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
cmp edx, 1
je 0x408ac2
movzx eax, byte [ecx + 0x14]
mov byte [edi + 0x14], al
mov edx, 1
mov byte [ecx + 0x14], dl
mov edi, dword [edi + 8]
mov byte [edi + 0x14], dl
mov eax, dword [ecx + 8]
mov edx, dword [eax]
mov dword [ecx + 8], edx
mov edi, dword [eax]
movsx edx, byte [edi + 0x15]
test edx, edx
je 0x408ca2
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x408c9d
mov edx, dword [ecx + 4]
cmp ecx, dword [edx]
je 0x408c91
mov dword [edx + 8], eax
jmp 0x408c93
mov dword [edx], eax
mov dword [eax], ecx
mov dword [ecx + 4], eax
jmp 0x408a7a
mov dword [edx + 4], eax
jmp 0x408c93
mov dword [edi + 4], ecx
jmp 0x408c74
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x408c4d
mov eax, dword [ebp - 0xb0]
mov byte [eax + 0x14], 1
mov eax, dword [edi]
mov byte [edi + 0x14], 0
mov edx, dword [eax + 8]
mov dword [ebp - 0xb0], eax
mov dword [edi], edx
mov edx, dword [eax + 8]
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x408d2a
mov edx, dword [ebp - 0xb0]
mov eax, dword [edi + 4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp edi, dword [edx + 4]
je 0x408d1f
mov eax, dword [edi + 4]
cmp edi, dword [eax + 8]
je 0x408d02
mov edx, dword [ebp - 0xb0]
mov dword [eax], edx
jmp 0x408d0b
mov edx, dword [ebp - 0xb0]
mov dword [eax + 8], edx
mov eax, dword [ebp - 0xb0]
mov dword [eax + 8], edi
mov dword [edi + 4], eax
mov edi, dword [ecx + 8]
jmp 0x408c4d
mov eax, dword [ebp - 0xb0]
mov dword [edx + 4], eax
jmp 0x408d0b
mov dword [edx + 4], edi
jmp 0x408cd9
mov byte [edi + 0x14], 1
mov eax, dword [ecx + 8]
mov byte [ecx + 0x14], 0
mov edx, dword [eax]
mov dword [ecx + 8], edx
mov edx, dword [eax]
movsx edi, byte [edx + 0x15]
test edi, edi
je 0x408d7a
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x408d75
mov edx, dword [ecx + 4]
cmp ecx, dword [edx]
je 0x408d66
mov dword [edx + 8], eax
jmp 0x408d68
mov dword [edx], eax
mov dword [eax], ecx
mov edi, dword [ecx + 8]
mov dword [ecx + 4], eax
jmp 0x408c20
mov dword [edx + 4], eax
jmp 0x408d68
mov dword [edx + 4], ecx
jmp 0x408d49
mov dword [eax + 4], edi
jmp 0x40858a
mov dword [esi + 4], ecx
jmp 0x40855c
mov ecx, dword [ebx + 4]
movsx eax, byte [esi + 0x15]
test eax, eax
je 0x408e67
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [eax + 4]
cmp ebx, dword [eax + 4]
je 0x408e5f
cmp ebx, dword [ecx]
je 0x408db9
mov dword [ecx + 8], esi
jmp 0x408dbb
mov dword [ecx], esi
mov eax, dword [ebp - 0x24]
mov eax, dword [eax + 4]
cmp ebx, dword [eax]
je 0x408e17
cmp ebx, dword [eax + 8]
jne 0x40859e
movsx edx, byte [esi + 0x15]
test edx, edx
je 0x408dea
mov dword [ebp - 0xb0], ecx
mov edx, dword [ebp - 0xb0]
mov dword [eax + 8], edx
jmp 0x40859e
mov edx, dword [esi + 8]
movsx edi, byte [edx + 0x15]
mov dword [ebp - 0xb0], esi
test edi, edi
jne 0x408ddc
mov edx, dword [ebp - 0x470000b0]
sbb dword [eax + 0x12], 0xffffff98
stosb byte es:[edi], al
test eax, 0x86c39bc1
mov esp, 0xf22ef7fc
mov dh, byte [ebp - 0x5c051dd7]
sbb dword [edx], esi
aas
xor bh, byte [edi]
xchg esp, eax
mov byte [ebx + 0x5e], dl
mov dword [0xe0a805ab], eax
test al, 0x8f
adc esp, dword [edx - 0x14b6c40]
imul esi, eax, 0x73
aas
pushfd
xor byte [edi], cl
and ah, ah
sbb eax, dword [edi - 0x7b8fbcef]
or edi, dword [edi + 0x7377dbe7]
xor edx, dword [edx + 0x6d5823d5]
invalid
jo 0x408e0b
xchg edx, eax
stosb byte es:[edi], al
sbb byte [eax - 0x34896a66], bh
jbe 0x408e34
ret
mov dword [0xf1051b], eax
dec edi
mov dl, 0xe8
pop edi
fmul dword [ebx + 0x77]
shr dword [edx + 0x2b], cl
pushal
ret