Function at 0x41f840
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
mov edi, edx
mov ebx, ecx
call fcn.00404940
mov dword [esp + 0x24], eax
push eax
call fcn.004045a0
add esp, 4
mov dword [esp + 0x20], eax
mov eax, dword [edi + 0x38]
mov dword [esp + 0x18], eax
mov dword [esp + 0x2c], edi
mov edi, dword [edi + 0x3c]
lea esi, [esp + 0x30]
push 0x120
push 0
push esi
call fcn.0040c6d0
add esp, 0xc
mov dword [esp + 0x28], ebx
mov ecx, ebx
push 0
push 0
push 0x120
push esi
push edi
push dword [esp + 0x2c]
call fcn.0043e3a0
test eax, eax
js 0x41fcc8
mov dword [esp + 8], 0xbaa3a8ba
mov byte [esp + 0xc], 0xd4
mov dword [esp + 0xd], 0
mov word [esp + 0x11], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x41f919
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xb75d164e
and eax, 0x375d164e
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x7a
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x41f8e0
lea edx, [esp + 0x38]
lea eax, [esp + 8]
mov esi, dword [esp + 0x28]
mov ecx, esi
mov edi, dword [esp + 0x20]
push edi
push eax
call fcn.0041fd70
add esp, 8
mov ebx, eax
mov dword [esp + 8], 0x7a726882
mov dword [esp + 0xc], 0xd69
mov byte [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 8
ja 0x41f999
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0xba9b5902
and eax, 0x3a9b5902
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0xf6
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 9
jb 0x41f960
lea edx, [esp + 0x118]
mov ecx, esi
push edi
lea eax, [esp + 0xc]
push eax
call fcn.0041fd70
add esp, 8
mov byte [esp + 0x18], al
mov dword [esp + 8], 0xa5a7aa94
mov dword [esp + 0xc], 0xa28db299
mov byte [esp + 0x10], 0x24
mov dword [esp + 0x11], 0
mov byte [esp + 0x15], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xd
ja 0x41fa3a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0x14aa308b
and eax, 0x14aa308b
lea eax, [edx + eax*2]
lea edx, [eax + ecx]
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0x49
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xe
jb 0x41f9f0
lea edx, [esp + 0x50]
mov ecx, esi
push edi
lea eax, [esp + 0xc]
push eax
call fcn.0041fd70
add esp, 8
mov byte [esp + 0x1f], al
mov dword [esp + 8], 0x7166746c
mov byte [esp + 0xc], 0x98
mov dword [esp + 0xd], 0
mov dword [esp + 0x10], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xb
ja 0x41fac0
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0x3f20b5b
and eax, 0x3f20b5b
lea eax, [edx + eax*2]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
sub edx, eax
mov dword [esp + 4], edx
mov eax, dword [esp + 4]
add al, 0x39
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xc
jb 0x41fa80
and bl, byte [esp + 0x18]
lea edx, [esp + 0x68]
mov ecx, esi
push edi
lea eax, [esp + 0xc]
push eax
call fcn.0041fd70
add esp, 8
mov byte [esp + 0x18], al
fild qword [esp + 0x130]
mov dword [esp + 8], 0x4a4e775b
mov dword [esp + 0xc], 0x54475442
mov dword [esp + 0x10], 0xc9534343
mov word [esp + 0x14], 0
mov byte [esp + 0x16], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xe
ja 0x41fb59
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 8]
mov edx, eax
xor edx, 0x6cb32ed5
and eax, 0xecb32ed5
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 4]
add al, 0xd7
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xf
jb 0x41fb20
and bl, byte [esp + 0x1f]
sub esp, 0x10
fstp qword [esp + 8]
lea eax, [esp + 0x18]
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.00405cb0
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 8], 0x30dd3229
mov dword [esp + 0xc], 0x35332621
mov word [esp + 0x10], 0x892d
mov dword [esp + 0x12], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xd
ja 0x41fbf7
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 8]
mov edi, ecx
xor edi, 0xfd757e20
and ecx, 0xfd757e20
lea ecx, [edi + ecx*2]
xor ecx, edx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
mov edx, ecx
xor edx, 0xa0
and ecx, 0x5f
add ecx, ecx
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0xe
jb 0x41fbb0
and bl, byte [esp + 0x18]
push eax
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x28]
call fcn.00405d40
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x88]
mov dword [esp + 0x18], eax
mov dword [esp + 8], 0x211a1be4
mov dword [esp + 0xc], 0xd9dc22d1
mov word [esp + 0x10], 0xb72f
mov dword [esp + 0x12], 0
mov byte [esp + 0x16], 0
or edi, esi
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0xe
ja 0x41fcaa
mov edx, dword [esp]
mov ecx, dword [esp]
movzx esi, byte [esp + ecx + 8]
lea ecx, [edx + esi]
add ecx, 0x9a63329d
add edx, 0x9a63329d
and edx, esi
mov eax, ecx
xor eax, edx
mov esi, edx
not esi
and ecx, esi
add ecx, ecx
sub ecx, eax
mov eax, ecx
not eax
and eax, edx
and ecx, esi
sub ecx, eax
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
mov eax, ecx
xor eax, 0x11
and ecx, 0x6e
add ecx, ecx
sub ecx, eax
mov eax, dword [esp]
mov byte [esp + eax + 8], cl
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xf
jb 0x41fc50
push dword [esp + 0x18]
lea eax, [esp + 0xc]
push eax
push dword [esp + 0x28]
call fcn.00405d40
add esp, 0xc
or edi, eax
sete al
and bl, al
jmp 0x41fcca
xor ebx, ebx
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edx, dword [ecx + 4]
mov ecx, eax
or ecx, edx
mov edi, dword [esp + 0x28]
je 0x41fd08
mov ecx, edi
push 0
push 0
push 0x40
lea esi, [esp + 0x3c]
push esi
push edx
push eax
call fcn.0043e3a0
test eax, eax
js 0x41fd08
lea edx, [esp + 0x30]
mov ecx, edi
push dword [ebp + 8]
call fcn.0041f840
add esp, 4
or bl, al
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov ecx, eax
or ecx, edx
je 0x41fd43
mov ecx, edi
push 0
push 0
push 0x40
lea esi, [esp + 0x3c]
push esi
push edx
push eax
call fcn.0043e3a0
test eax, eax
js 0x41fd43
lea edx, [esp + 0x30]
mov ecx, edi
push dword [ebp + 8]
call fcn.0041f840
add esp, 4
or bl, al
test bl, bl
je 0x41fd58
push dword [esp + 0x24]
push dword [ebp + 8]
call fcn.00405620
add esp, 8
jmp 0x41fd64
push dword [esp + 0x24]
call fcn.00404810
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret