Function at 0x407c60
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x3c
mov dword [esp + 8], ecx
mov edx, dword [esp + 0x50]
mov eax, dword [0x447834]
mov esi, edx
xor eax, esp
and esi, 0x8b32fd15
mov dword [esp + 0x38], eax
mov eax, edx
and edx, 0xea014e81
mov dword [esp + 0x14], 0x7fffffff
not eax
mov ecx, eax
and ecx, 0x74cd02ea
or esi, ecx
xor esi, 0x9ec9cfe1
or esi, eax
and eax, 0x15feb17e
or edx, eax
mov edi, esi
mov eax, edx
and edx, 0x15feb17e
or edi, 0xa5d420b8
not eax
and eax, 0xea014e81
or edx, eax
mov ecx, edx
mov ebx, edx
mov dword [esp], edx
not ecx
and ebx, 0x15fb32f4
mov eax, ecx
mov dword [esp + 4], ecx
and eax, 0xea04cd0b
or ebx, eax
not ebx
or ebx, ecx
mov eax, ebx
mov ecx, ebx
or ebx, 0xa5d420b8
not eax
and ecx, 0x958d1e0d
and eax, 0x6a72e1f2
or eax, ecx
mov dword [esp + 0xc], eax
xor eax, 0x958d1e0d
mov ebp, eax
or ebp, 0x5a2bdf47
mov ecx, ebp
and ebp, 0x16af0404
not ecx
and ecx, 0xa15020b8
or ecx, ebp
mov ebp, ebx
and ebx, 0x16af0404
not ebp
and ebp, 0x4800db43
or ebp, ebx
xor ebp, ecx
mov ecx, esi
xor ecx, 0x5a2bdf47
and ecx, esi
mov ebx, ecx
and ecx, 0xb1f3d8a0
not ebx
mov edx, ebx
or ebx, edi
and edx, 0x4e0c275f
not ebx
or ecx, edx
mov edx, edi
and edi, 0x4e0c275f
not edx
and edx, 0x1023d800
or edx, edi
xor edx, ecx
mov ecx, ebp
or ebx, edx
mov edx, dword [esp + 0xc]
not ecx
and ecx, ebx
not ebx
and ebx, ebp
or ebx, ecx
mov ecx, eax
xor edx, 0x207260e2
and ecx, 0x5f809510
and edx, 0xa07f6aef
or edx, ecx
mov ecx, esi
and esi, 0xa07f6aef
not ecx
or eax, ecx
and ecx, 0x5f809510
or esi, ecx
not eax
xor esi, edx
mov edx, dword [esp]
or eax, esi
mov esi, ebx
not eax
and esi, eax
xor eax, ebx
or eax, esi
mov edi, edx
mov ecx, eax
and eax, 0x5bf14c1f
xor edi, 0x8be26232
not ecx
and edi, edx
and edx, 0xec9093fb
and ecx, 0xa40eb3e0
or eax, ecx
mov ecx, eax
and eax, 0x4e0a7ee4
not ecx
and ecx, 0xb1f5811b
or eax, ecx
mov ecx, dword [esp + 4]
and ecx, 0x136f6c04
or edx, ecx
mov ecx, edx
xor edx, 0x10290404
xor ecx, 0xec9093fb
and edx, 0xbc39062f
mov esi, ecx
and esi, 0x8be26232
mov ebx, esi
and ebx, edi
xor edi, esi
or edi, ebx
mov esi, edi
and edi, 0xd9a8ce8
not esi
and esi, 0xf2657317
or edi, esi
mov esi, ecx
and ecx, 0xf
and esi, 0x43c6f9d0
or esi, edx
mov edx, edi
xor edi, 0x7987112a
xor esi, 0xbc390620
xor edx, 0x6408640
or ecx, esi
and edx, 0x77448640
mov esi, ecx
and ecx, 0xd8a25a88
not esi
and esi, 0x275da577
or ecx, esi
mov esi, edi
and esi, 0x88bb79bf
or edx, esi
mov esi, ecx
xor ecx, 0x275da577
xor esi, 0x50000200
or edi, ecx
and ecx, 0x88bb79bf
and esi, 0x77448640
not edi
or esi, ecx
xor esi, edx
or edi, esi
mov ecx, edi
and edi, 0xbcb6ec43
not ecx
and ecx, 0x434913bc
or edi, ecx
mov edx, edi
xor edi, 0x420902b8
xor edx, 0x98a6e800
and edi, 0x661906fb
and edx, 0x99e6f904
or edx, edi
mov ecx, edx
xor edx, 0x24100620
xor ecx, 0x1824c800
and edx, 0xa5d23724
and ecx, 0x5a2dc8db
or ecx, edx
mov edx, eax
and eax, 0xe82ab238
not edx
mov esi, ecx
mov edi, edx
xor esi, 0x21d21320
or edx, 0x1043917a
and edi, 0x17d54dc7
and esi, 0x69de1322
or eax, edi
mov edi, ecx
xor ecx, 0x4a6e59a1
xor edi, 0x5a2dc8db
mov ebx, edi
and ecx, edi
and ebx, 0x9621ecdd
or ebx, esi
mov esi, eax
xor eax, 0x796dcbd
xor esi, 0xe82ab238
and eax, esi
mov edi, eax
and eax, 0x3c5c3fcb
not edi
mov ebp, edi
or edi, edx
and ebp, 0xc3a3c034
not edi
or eax, ebp
mov ebp, edx
and edx, 0xc3a3c034
not ebp
and ebp, 0x2c1c2e81
or ebp, edx
xor ebp, eax
or edi, ebp
mov ebp, ebx
xor ebx, 0x799d8258
xor ebp, 0x9621ecdd
and ebx, ebp
mov eax, ebx
and eax, ecx
xor ecx, ebx
or ecx, eax
mov eax, edi
not eax
and eax, ecx
not ecx
and ecx, edi
or ecx, eax
mov eax, esi
and eax, ebp
xor ebp, esi
or ebp, eax
mov eax, ecx
not ebp
and eax, ebp
xor ebp, ecx
or ebp, eax
mov eax, 0xf634e446
nop word [eax + eax]
cmp eax, 0xf634e445
jle 0x407fe0
cmp eax, 0x71c26dc9
je 0x408184
cmp eax, 0x38fc3ce9
je 0x4082a5
cmp eax, 0xf634e446
jne 0x407fa0
mov eax, dword [esp + 0x14]
mov ecx, 0x9e9c96e1
cmp eax, dword [esp + 0x50]
mov eax, 0x80e3d277
cmovb eax, ecx
cmp eax, 0xf634e445
jg 0x407fa7
cmp eax, 0x80e3d277
je 0x407ffe
cmp eax, 0x90a98af0
je 0x4082d6
cmp eax, 0x9e9c96e1
jne 0x407fa0
jmp 0x4082f3
mov ecx, dword [esp + 8]
mov edi, 0xb7745f77
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x18]
mov dword [esp], eax
mov eax, dword [eax + 0x14]
mov dword [esp + 0x1c], eax
mov eax, dword [ecx + 0x14]
lea ecx, [esp + 0x28]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x30], ebp
mov ecx, dword [esp + 0x30]
mov edx, eax
shr edx, 1
mov dword [esp + 0x28], ecx
cmp edi, 0xdc1be86c
jg 0x4080c0
jmp 0x408058
mov edi, 0xbf0ef74d
mov esi, 0x7fffffff
cmp edi, 0xdc1be86c
jg 0x4080c0
cmp edi, 0x95c54b0d
je 0x408091
cmp edi, 0xb7745f77
je 0x408075
cmp edi, 0xbf0ef74d
jne 0x408050
jmp 0x408103
cmp dword [esp + 0x30], 0
mov edi, 0x95c54b0d
mov ebx, 0xdc1be86d
cmovs edi, ebx
cmp edi, 0xdc1be86c
jle 0x408058
jmp 0x4080c0
mov dword [esp + 0x34], edx
mov edi, 0x7fffffff
mov ebx, 0x18dd9667
sub edi, dword [esp + 0x34]
cmp edi, eax
mov edi, 0xb743c06
cmovb edi, ebx
cmp edi, 0xdc1be86c
jle 0x408058
nop word cs:[eax + eax]
nop
cmp edi, 0xdc1be86d
je 0x408046
cmp edi, 0xb743c06
je 0x4080e5
cmp edi, 0x18dd9667
jne 0x408050
jmp 0x408046
mov esi, dword [esp + 0x34]
mov edi, 0xbf0ef74d
add esi, eax
cmp ecx, esi
cmovae esi, ecx
cmp edi, 0xdc1be86c
jle 0x408058
jmp 0x4080c0
mov eax, dword [esp + 0x2c]
mov eax, dword [esp + 8]
mov dword [esp + 0x20], eax
lea eax, [esp + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
lea eax, [esi + 1]
push eax
call fcn.00408310
add esp, 4
mov dword [esp + 0x10], eax
mov edi, eax
mov ebx, dword [esp + 0x50]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov dword [esp + 4], ebp
mov dword [eax + 0x10], ebx
mov eax, dword [esp]
mov dword [eax + 0x14], esi
push ebx
push dword [esp + 0x5c]
push edi
call fcn.0041ced0
add esp, 0xc
mov byte [edi + ebx], 0
mov ebp, dword [esp + 4]
mov ecx, 0x71c26dc9
mov eax, dword [esp + 0x1c]
cmp eax, 0xf
mov eax, 0x38fc3ce9
cmova eax, ecx
cmp eax, 0xf634e445
jg 0x407fa7
jmp 0x407fe0
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ecx, dword [edi]
mov edx, dword [esp + 0x20]
inc eax
mov edx, 0xc6da1ab6
mov dword [esp + 0x30], eax
nop dword [eax]
cmp edx, 0x900172a3
je 0x4081db
cmp edx, 0xb4fb5a6a
je 0x4082b1
cmp edx, 0xc6da1ab6
jne 0x4081a0
mov edx, dword [esp + 0x30]
mov esi, 0x900172a3
cmp edx, 0xfff
mov edx, 0xb4fb5a6a
cmova edx, esi
cmp edx, 0x900172a3
jne 0x4081a8
mov edx, dword [ecx - 4]
add eax, 0x23
mov dword [esp + 0x34], edx
mov edx, 0xac1f43e6
sub ecx, dword [esp + 0x34]
cmp ecx, 3
seta byte [esp + 0x28]
cmp ecx, 0x24
setb byte [esp + 0x2c]
cmp edx, 0xac1f43e6
jne 0x408275
movzx edx, byte [esp + 0x28]
movzx ecx, byte [esp + 0x2c]
mov esi, 0x73576479
mov ebx, 0xd8f649f6
mov ch, dl
xor ch, 1
and dl, ch
mov dh, ch
and dh, dl
xor dl, ch
mov ch, cl
xor ch, 1
or dl, dh
and cl, ch
mov dh, ch
and dh, cl
xor cl, ch
mov ch, dl
or cl, dh
xor ch, cl
or cl, dl
xor cl, 1
mov dl, ch
or cl, ch
xor cl, 1
and dl, cl
xor cl, ch
or cl, dl
mov edx, ecx
xor dl, 1
mov ch, dl
and ch, cl
xor dl, ch
test dl, 1
cmovne esi, ebx
test ch, 1
mov edx, esi
cmovne edx, ebx
test cl, 1
cmovne edx, esi
cmp edx, 0xac1f43e6
je 0x408206
cmp edx, 0xd8f649f6
je 0x40828b
cmp edx, 0x73576479
jne 0x4081fe
jmp 0x4082f8
mov ecx, dword [esp + 0x34]
mov edx, 0xb4fb5a6a
cmp edx, 0x900172a3
jne 0x4081a8
jmp 0x4081db
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov dword [eax], ecx
jmp 0x4082c1
push eax
push ecx
call fcn.0041788e
add esp, 8
mov eax, dword [esp + 0x10]
mov dword [edi], eax
mov eax, 0x90a98af0
cmp eax, 0xf634e445
jg 0x407fa7
jmp 0x407fe0
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
xor ecx, esp
call fcn.004178c4
mov eax, dword [esp + 8]
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
call fcn.00408300
call fcn.00423509
int3