Function at 0x41fa90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffb0
mov eax, 0x2e2
push eax
call fcn.00422088
pop eax
inc eax
cmp ax, 0x316
jbe 0x41fa9b
mov ax, 0x14b
call fcn.00421ef4
mov dword [ebp - 0x48], eax
mov ax, 0x14a
call fcn.00421ef4
mov dword [ebp - 4], eax
cmp eax, 1
mov ax, 0x670
ja 0x41fad2
je 0x41facf
add eax, 4
add eax, 4
mov edx, 0x575456
lea ecx, [eax*4 + 0x4c44cc]
push dword [ecx]
push dword [edx]
mov dword [edx + 0xd], eax
inc eax
push dword [ecx + 4]
push dword [edx + 0x32]
mov dword [edx + 0x3f], eax
call fcn.00403bd8
call fcn.00403bd8
cmp dword [ebp - 4], 0
jne 0x41fe05
pushal
xor edx, edx
lea eax, [edx + 0x5a]
call fcn.00421f94
inc eax
cmp al, 0x5c
jbe 0x41fb09
mov esi, 0x41f9cc
mov edi, fcn.0041fa58
xor ebx, ebx
mov eax, dword [ebp - 0x48]
add eax, dword [0x4c42a8]
cmp byte [eax], 3
je 0x41fc44
cmp ebx, 3
ja 0x41fb9d
je 0x41fb62
mov ax, 0x4b27
imul edx, ebx, 0x2d0000
add edx, 0x13b0050
call esi
mov ax, 0x8032
call fcn.0041fa78
call fcn.0041fa84
mov ax, 0x27
mov dx, 0x60c
call edi
mov ax, 0x4b23
imul edx, ebx, 0x2d0000
add edx, 0x5a0050
call esi
mov ax, 0x802f
call fcn.0041fa78
call fcn.0041fa84
mov ax, 0x23
mov dx, 0x60e
call edi
imul edx, ebx, 0x2d0000
add edx, 0x5a028a
call fcn.0041fbec
imul edx, ebx, 0x2d0000
add edx, 0x5a015e
call fcn.0041fc09
or ebx, ebx
jne 0x41fbdd
mov ax, 0x321f
mov edx, 0x10e028a
call esi
mov ax, 0x8223
call fcn.0041fa78
call fcn.0041fa84
mov al, 0x1f
mov dx, 0x60b
call edi
mov edx, 0x195028a
call fcn.0041fc2c
inc ebx
cmp ebx, 9
jbe 0x41fb31
jmp 0x41fdff
cmp ebx, 4
ja 0x41fcd0
je 0x41fcbf
mov ax, 0x321f
imul edx, ebx, 0x230000
push edx
add edx, 0x10b0032
call esi
mov ax, 0x8223
call fcn.0041fa78
call fcn.0041fa84
mov al, 0x1f
mov dx, 0x60b
call edi
mov ax, 0x4b27
pop edx
push edx
add edx, 0x1ba0032
call esi
mov ax, 0x8032
call fcn.0041fa78
call fcn.0041fa84
mov al, 0x27
mov dx, 0x60c
call edi
mov ax, 0x3923
pop edx
add edx, 0x1ba0113
call esi
mov ax, 0x802f
call fcn.0041fa78
call fcn.0041fa84
mov al, 0x23
mov dx, 0x60e
call edi
imul edx, ebx, 0x230000
add edx, 0x390032
call fcn.0041fbec
cmp ebx, 0xa
jae 0x41fce6
imul edx, ebx, 0x230000
add edx, 0x390113
call fcn.0041fc09
cmp ebx, 6
jae 0x41fd21
mov ax, 0xff2b
imul edx, ebx, 0x230000
add edx, 0x7f02cb
call esi
mov al, 0x2b
mov dx, 0x149
call fcn.0041fa30
mov ax, 0x8635
call fcn.0041fa78
lea edx, [ebx + 9]
call fcn.00421cf0
mov al, 0x2b
mov dx, 0x636
call edi
or ebx, ebx
jne 0x41fd99
mov ax, 0xff31
mov edx, 0x3902cb
call esi
mov al, 0x31
mov dx, 0x140
call fcn.0041fa30
mov ax, 0x84a9
call fcn.0041fa78
mov al, 0x31
mov dx, 0x637
call edi
mov ax, 0xff32
mov edx, 0x5c02cb
call esi
mov al, 0x32
mov dx, 0x141
call fcn.0041fa30
mov ax, 0x84bc
call fcn.0041fa78
mov al, 0x32
mov dx, 0x638
call edi
mov ax, 0x1733
mov edx, 0x17402cb
call esi
mov ax, 0x84f4
call fcn.0041fa78
mov al, 0x33
mov dx, 0x639
call edi
mov edx, 0x1dd02cb
call fcn.0041fc2c
mov ax, 0xff05
imul edx, ebx, 0x230000
add edx, 0x3901f4
call esi
mov al, 5
mov dx, 0x130
call fcn.0041fa30
mov ax, 0x8293
call fcn.0041fa78
call fcn.0041fa84
mov ecx, dword [0x4c42a8]
movzx ecx, byte [ebx + ecx]
jecxz 0x41fded
mov edx, 0x280020
call fcn.00421ec0
movzx edx, byte [ecx + 0x4ad0ac]
call fcn.00421e64
mov dl, 0x29
call fcn.00421ed0
mov al, 5
mov dx, 0x633
call edi
inc ebx
cmp ebx, 0xf
jbe 0x41fc44
popal
jmp 0x420184
cmp dword [ebp - 4], 1
jne 0x41fe22
mov dl, 1
mov ax, 0x5a
call fcn.00421f94
inc eax
xor edx, edx
cmp al, 0x5c
jbe 0x41fe11
jmp 0x420184
pushal
imul eax, dword [ebp - 0x48], 0x10
add eax, dword [ebp - 4]
add eax, dword [0x4c42a8]
mov cl, byte [eax + 0x2e]
mov byte [ebp - 0x49], cl
and ecx, 0x3f
mov dword [ebp - 0x50], ecx
mov eax, 0x5a
cdq
call fcn.00421f94
cmp cl, 1
sete dl
inc eax
cmp al, 0x5c
jbe 0x41fe42
xor ebx, ebx
mov esi, 0x41f9cc
mov ax, 0xff00
mov edx, 0x3c028a
call esi
xor eax, eax
mov edx, dword [ebp - 4]
add dx, 0x201
call fcn.0041fa30
mov ax, 0x863b
call fcn.0041fa78
mov edi, dword [ebp - 0x50]
lea edx, [di + 0x655]
cmp edi, 4
jbe 0x41fe90
mov edx, dword [edi*2 + 0x4ad08a]
call fcn.00421e64
mov edi, fcn.0041fa58
xor eax, eax
mov dx, 0x63a
call edi
mov eax, dword [ebp - 0x50]
dec eax
jne 0x41ff19
mov edx, 0x572341
test byte [ebp - 0x49], 0x40
sete byte [edx]
cmp byte [ebp - 0x49], 0x7f
setbe byte [edx + 0x32]
mov eax, dword [ebp - 4]
inc eax
shl eax, 8
mov dword [edx - 0xa], eax
mov al, 0x80
mov dword [edx + 0x28], eax
mov ax, 0xff01
imul edx, ebx, 0x1180000
add edx, 0x3c0032
call esi
mov al, 1
imul edx, dword [ebp - 4], 0x10
lea edx, [ebx + edx + 0x110]
call fcn.0041fa30
mov ax, 0x804d
call fcn.0041fa78
mov edx, dword [ebp - 4]
lea edx, [ebx + edx*2 - 3]
call fcn.00421cf0
mov al, 1
mov dx, 0x609
call fcn.0041fa58
xor ebx, 1
jne 0x41fecb
jmp 0x420183
dec eax
je 0x41ff23
dec eax
jne 0x420004
mov edx, ebx
and edx, 7
imul edx, edx, 0x2d0000
add edx, 0x8c0096
cmp ebx, 8
jb 0x41ff3e
add dx, 0x12c
cmp dword [ebp - 0x50], 3
jbe 0x41ff64
push 1
pop eax
call esi
mov ax, 0x8223
call fcn.0041fa78
call fcn.0041fa84
mov al, 1
mov dx, 0x60b
call edi
jmp 0x41fff5
mov ax, 0xff01
call esi
cmp dword [ebp - 0x50], 3
je 0x41ff99
mov ax, 0x825b
call fcn.0041fa78
mov edx, ebx
call fcn.00421cf0
mov ecx, dword [ebp - 4]
mov ch, byte [ebp - 0x48]
shl ecx, 4
add ecx, dword [0x4c42a8]
movzx ecx, byte [ebx + ecx + 0x13d]
jmp 0x41ffb1
mov ax, 0x8293
call fcn.0041fa78
call fcn.0041fa84
mov ecx, dword [0x4c42a8]
movzx ecx, byte [ebx + ecx]
jecxz 0x41ffda
mov edx, 0x280020
call fcn.00421ec0
mov edx, ecx
add dl, 0xaf
cmp dword [ebp - 0x50], 3
jne 0x41ffce
mov dl, byte [ecx + 0x4ad0ac]
call fcn.00421e64
mov dl, 0x29
call fcn.00421ed0
mov al, 1
mov dx, 0x636
sub edx, dword [ebp - 0x50]
call edi
mov al, 1
imul edx, dword [ebp - 4], 0x10
add dx, 0x110
call fcn.0041fa30
inc ebx
cmp ebx, 0xf
jbe 0x41ff23
jmp 0x420183
dec eax
je 0x420018
dec eax
je 0x4200b7
dec eax
je 0x420018
dec eax
jne 0x4200ad
imul edx, ebx, 0x320000
push edx
add edx, 0x8c0154
cmp dword [ebp - 0x50], 7
je 0x42002f
mov dx, 0x96
cmp ebx, 6
jb 0x42003a
add edx, 0xfed40100
push 1
pop eax
cmp dword [ebp - 0x50], 4
je 0x420045
mov ah, 0x10
call esi
mov ax, 0x8320
cmp dword [ebp - 0x50], 6
jb 0x420057
mov al, 0x31
je 0x420057
inc eax
inc eax
call fcn.0041fa78
call fcn.0041fa84
mov al, 1
mov dx, 0x632
cmp dword [ebp - 0x50], 6
jb 0x420072
mov dl, 0x10
je 0x420072
inc edx
call edi
pop edx
cmp dword [ebp - 0x50], 7
jne 0x4200a1
cmp ebx, 6
jae 0x4200a1
add edx, 0x8c0064
push 0xf
pop eax
call esi
mov ax, 0x8223
call fcn.0041fa78
call fcn.0041fa84
mov al, 0xf
mov dx, 0x60b
call edi
inc ebx
cmp ebx, 0xb
jbe 0x420018
jmp 0x420110
dec eax
je 0x41ff23
dec eax
jne 0x420114
imul edx, ebx, 0x2d0000
add edx, 0x8c0096
push edx
xor eax, eax
inc eax
call esi
mov ax, 0x8223
call fcn.0041fa78
call fcn.0041fa84
mov al, 1
mov dx, 0x60b
call edi
pop edx
cmp dword [ebp - 0x50], 9
je 0x4200eb
cmp ebx, 6
jae 0x42010c
add dx, 0x12c
mov ax, 0x100a
call esi
mov ax, 0x8331
call fcn.0041fa78
call fcn.0041fa84
mov al, 0xa
mov dx, 0x610
call edi
inc ebx
cmp ebx, 7
jbe 0x4200b7
jmp 0x420183
dec eax
jne 0x420183
or ebx, ebx
jne 0x420152
xor eax, eax
inc eax
mov edx, 0x8c00c8
call esi
mov ax, 0x84a9
call fcn.0041fa78
mov al, 1
mov dx, 0x637
call edi
mov ax, 0x102
mov edx, 0xbe00c8
call esi
mov ax, 0x84bc
call fcn.0041fa78
mov al, 2
mov dx, 0x638
call edi
mov ax, 0x907
imul edx, ebx, 0x320000
add edx, 0xf000c8
call esi
mov ax, 0x8635
call fcn.0041fa78
lea edx, [ebx + 9]
call fcn.00421cf0
mov al, 7
mov dx, 0x636
call edi
inc ebx
cmp ebx, 5
jbe 0x420117
popal
mov esp, ebp
pop ebp
ret