Function at 0x409a18
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x41e69b
call fcn.0041d040
sub esp, 0xd0
push ebx
push esi
push edi
mov edi, dword [ebp + 0x24]
mov dword [ebp - 0x88], ecx
xor ebx, ebx
mov dword [ebp - 0x8c], edx
mov dword [edi + 0x20], ebx
mov dword [edi + 0x18], ebx
mov dword [edi + 0x10], ebx
mov dword [edi + 8], ebx
mov dword [edi], ebx
push 8
lea ecx, [ebp - 0xd8]
mov dword [edi + 0x24], ebx
mov dword [edi + 0x1c], ebx
mov dword [edi + 0x14], ebx
mov dword [edi + 0xc], ebx
mov dword [edi + 4], ebx
mov dword [edi + 0x28], ebx
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x14], ebx
call fcn.0040178a
mov dword [ebp - 0xd8], 0x421778
mov eax, dword [ebp + 0x14]
mov dword [ebp - 4], ebx
cmp byte [eax], bl
je 0x409502
push 1
pop eax
jmp 0x409508
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
xor esi, esi
cmp eax, ebx
mov dword [ebp - 0x20], eax
jle 0x40957a
lea ecx, [ebp - 0x58]
call fcn.004049aa
mov eax, dword [ebp + 0x14]
mov byte [ebp - 4], 1
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], ebx
cmp byte [eax], bl
jne 0x40954b
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x80]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + esi*4]
push dword [eax]
call fcn.00404da0
test al, al
je 0x40959b
mov eax, dword [ebp - 0x60]
shr eax, 4
test al, 1
jne 0x4095b0
push dword [ebp - 0x7c]
lea ecx, [ebp - 0xd8]
push dword [ebp - 0x80]
call fcn.0040f877
mov eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x7c]
add dword [ebp - 0x18], eax
push dword [ebp - 0x58]
mov byte [ebp - 4], bl
adc dword [ebp - 0x14], ecx
call fcn.004030da
inc esi
pop ecx
cmp esi, dword [ebp - 0x20]
jl 0x409511
push 0xf8
call fcn.004030b3
pop ecx
mov ecx, eax
mov dword [ebp + 0x24], ecx
cmp ecx, ebx
mov byte [ebp - 4], 2
je 0x4095c5
call fcn.00409d3f
mov esi, eax
jmp 0x4095c7
lea eax, [ebp + 0x14]
push 0x422618
push eax
mov dword [ebp + 0x14], str.there_is_no_such_archive
call sub.MSVCRT.dll__CxxThrowException
lea eax, [ebp + 0x14]
push 0x422618
push eax
mov dword [ebp + 0x14], str.cant_decompress_folder
call sub.MSVCRT.dll__CxxThrowException
xor esi, esi
cmp esi, ebx
mov byte [ebp - 4], bl
mov dword [ebp - 0xdc], esi
je 0x4095da
mov eax, dword [esi]
push esi
call dword [eax + 4]
cmp dword [ebp - 0x20], 1
mov ecx, dword [ebp + 0x14]
mov byte [ebp - 4], 3
mov eax, dword [ecx + 0xc]
mov ecx, dword [ecx + 8]
setg dl
mov dword [esi + 0xe8], ebx
mov dword [esi + 0xe0], ebx
mov dword [esi + 0xd8], ebx
cmp dl, bl
mov byte [esi + 0xbb], dl
mov dword [esi + 0x30], ecx
mov dword [esi + 0x34], eax
mov dword [esi + 0xec], ebx
mov dword [esi + 0xe4], ebx
mov dword [esi + 0xdc], ebx
mov dword [esi + 0xf0], ebx
je 0x409662
push dword [ebp - 0x14]
mov eax, dword [ebp + 0x1c]
push dword [ebp - 0x18]
mov ecx, dword [eax]
push eax
call dword [ecx + 0xc]
cmp eax, ebx
mov dword [ebp + 0x24], eax
je 0x409662
cmp esi, ebx
mov byte [ebp - 4], bl
je 0x40964b
mov eax, dword [esi]
push esi
call dword [eax + 8]
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xd8]
call fcn.004033f0
mov eax, dword [ebp + 0x24]
jmp 0x409a56
cmp dword [ebp - 0x20], ebx
mov dword [ebp - 0x1c], ebx
jle 0x4099db
mov eax, dword [ebp + 8]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + ecx*4]
lea ecx, [ebp - 0x58]
mov dword [ebp + 0x24], eax
call fcn.004049aa
mov eax, dword [ebp + 0x14]
mov byte [ebp - 4], 4
cmp byte [eax], bl
je 0x40969b
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x7c], ebx
mov dword [ebp - 0x60], ebx
jmp 0x4096be
mov eax, dword [ebp + 0x24]
lea ecx, [ebp - 0x80]
push dword [eax]
call fcn.00404da0
test al, al
je 0x409c86
mov eax, dword [ebp - 0x60]
shr eax, 4
test al, 1
jne 0x409c86
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx]
call dword [eax + 0x18]
mov eax, dword [ebp + 0x24]
mov ecx, dword [ebp + 0x1c]
mov eax, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 0x24]
cmp eax, ebx
mov dword [ebp - 0x10], eax
jne 0x409a67
lea ecx, [ebp - 0xc4]
call 0x409c9b
push 4
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 5
call fcn.0040178a
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 6
mov dword [ebp - 0x40], 0x4213b0
call fcn.00403419
lea ecx, [ebp - 0x40]
push dword [ebp - 0x8c]
call fcn.0040f92a
push dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
lea ecx, [ebp - 0xc4]
mov byte [ebp - 4], 7
push dword [ebp + 0x24]
mov al, byte [eax]
push ebx
push eax
lea eax, [ebp - 0x40]
push eax
push dword [ebp - 0x88]
call fcn.0040ba60
cmp eax, 0x80004004
mov dword [ebp - 0x10], eax
je 0x409a85
mov ecx, dword [ebp + 0x18]
mov eax, dword [ecx]
call dword [eax + 0x14]
mov ecx, dword [ebp + 0x1c]
mov byte [ebp - 0x84], al
push dword [ebp - 0x84]
mov eax, dword [ebp + 0x24]
mov edx, dword [ecx]
push dword [ebp - 0x10]
mov eax, dword [eax]
push eax
call dword [edx + 0x28]
cmp eax, ebx
mov dword [ebp + 0x24], eax
jne 0x409ac0
cmp dword [ebp - 0x10], ebx
jne 0x4099a4
mov eax, dword [ebp + 0x14]
cmp byte [eax], bl
jne 0x40981b
cmp dword [ebp - 0xa8], ebx
mov dword [ebp - 0x10], ebx
jle 0x409821
mov eax, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0x10]
push dword [eax + ecx*4]
mov ecx, dword [ebp + 0xc]
call fcn.0040a31b
cmp eax, ebx
mov dword [ebp + 0x24], eax
jl 0x40980d
mov eax, dword [ebp - 0x1c]
cmp dword [ebp + 0x24], eax
jle 0x40980d
mov ecx, dword [ebp + 8]
push 1
push dword [ebp + 0x24]
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp + 0xc]
push 1
mov eax, dword [ecx]
push dword [ebp + 0x24]
call dword [eax + 4]
mov eax, dword [ebp - 0xcc]
mov ecx, dword [ebp + 0x24]
push 1
mov ecx, dword [eax + ecx*8]
sub dword [ebp - 0x18], ecx
mov ecx, dword [ebp + 0x24]
push ecx
mov eax, dword [eax + ecx*8 + 4]
lea ecx, [ebp - 0xd8]
sbb dword [ebp - 0x14], eax
call fcn.00403568
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, dword [ebp - 0xa8]
jl 0x4097a0
cmp dword [ebp - 0xa8], ebx
je 0x40984f
mov eax, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0x98]
add dword [ebp - 0x18], eax
mov eax, dword [ebp + 0x1c]
adc dword [ebp - 0x14], ecx
mov ecx, dword [eax]
push dword [ebp - 0x14]
push dword [ebp - 0x18]
push eax
call dword [ecx + 0xc]
cmp eax, ebx
mov dword [ebp + 0x24], eax
jne 0x409af9
push 3
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x24], ebx
call fcn.00402126
mov ecx, dword [ebp + 0x18]
lea edx, [ebp - 0x2c]
push edx
mov byte [ebp - 4], 8
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp eax, ebx
mov dword [ebp + 0x24], eax
jne 0x409b32
cmp dword [ebp - 0x28], ebx
je 0x409899
mov ecx, dword [ebp + 0x1c]
lea edx, [ebp - 0x2c]
push edx
mov eax, dword [ecx]
call dword [eax + 0x34]
cmp eax, ebx
mov dword [ebp + 0x24], eax
jne 0x409b74
mov eax, dword [ebp - 0xbc]
mov dword [ebp + 0x24], ebx
cmp eax, ebx
jle 0x4098dd
mov eax, dword [ebp - 0xb8]
mov ecx, dword [ebp + 0x24]
mov eax, dword [eax + ecx*4]
cmp dword [eax + 0x34], ebx
je 0x4098cf
mov ecx, dword [ebp + 0x1c]
mov eax, dword [eax + 0x30]
push eax
push ecx
mov edx, dword [ecx]
call dword [edx + 0x1c]
cmp eax, ebx
mov dword [ebp - 0x10], eax
jne 0x409bb6
mov eax, dword [ebp - 0xbc]
inc dword [ebp + 0x24]
cmp dword [ebp + 0x24], eax
jl 0x4098a6
mov ecx, dword [ebp - 0xb8]
mov eax, dword [ecx + eax*4 - 4]
mov ecx, dword [ebp + 0x14]
mov dword [ebp + 0x24], eax
cmp byte [ecx], bl
jne 0x4098fb
cmp byte [ebp - 0x5c], bl
jne 0x4098fb
push 1
pop ecx
jmp 0x4098fd
xor ecx, ecx
mov byte [eax + 0x2c], cl
mov ecx, dword [ebp - 0x68]
mov dword [eax + 0x24], ecx
mov ecx, dword [ebp - 0x64]
mov dword [eax + 0x28], ecx
lea eax, [ebp - 0x48]
push eax
mov eax, dword [ebp - 0x9c]
push dword [ebp + 0x20]
add eax, dword [ebp - 0x80]
mov ecx, dword [ebp - 0x98]
mov edx, dword [ebp + 0x10]
adc ecx, dword [ebp - 0x7c]
push esi
push dword [ebp + 0x1c]
push dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 0x24]
push eax
call fcn.00409fc2
cmp eax, ebx
mov dword [ebp + 0x24], eax
jne 0x409bf5
mov eax, dword [ebp + 0x14]
cmp byte [eax], bl
jne 0x409965
mov ecx, dword [ebp - 0x9c]
mov edx, dword [ebp - 0x98]
add ecx, dword [ebp - 0x80]
adc edx, dword [ebp - 0x7c]
mov dword [ebp - 0x48], ecx
mov dword [ebp - 0x44], edx
jmp 0x40996b
mov edx, dword [ebp - 0x44]
mov ecx, dword [ebp - 0x48]
mov eax, dword [esi + 0xd0]
add dword [eax + 0x20], ecx
adc dword [eax + 0x24], edx
mov eax, dword [esi + 0xd0]
mov ecx, dword [esi + 0xe8]
mov dword [eax + 0x28], ecx
mov ecx, dword [esi + 0xec]
mov dword [eax + 0x2c], ecx
mov eax, dword [ebp + 0x20]
push dword [ebp - 0x2c]
cmp dword [eax + 4], ebx
jne 0x409c34
call fcn.004030da
pop ecx
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 5
call fcn.004033f0
lea ecx, [ebp - 0xc4]
mov byte [ebp - 4], 4
call fcn.00409cd1
mov byte [ebp - 4], 3
push dword [ebp - 0x58]
call fcn.004030da
inc dword [ebp - 0x1c]
pop ecx
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 0x20]
jl 0x40966e
inc eax
lcall 0xff3c, 0x8d8dffff
invalid
mov eax, dword [esi + 0xd8]
cmp esi, ebx
mov dword [edi + 0x18], eax
mov eax, dword [esi + 0xdc]
mov dword [edi + 0x1c], eax
mov eax, dword [esi + 0xe0]
mov dword [edi + 0x20], eax
mov eax, dword [esi + 0xe4]
mov dword [edi + 0x24], eax
mov eax, dword [esi + 0xe8]
mov dword [edi + 8], eax
mov eax, dword [esi + 0xec]
mov dword [edi + 0xc], eax
mov eax, dword [esi - 0x38ffff10]
mov eax, 4
sub esp, eax
invalid
les ecx, [ebx - 0x38d57630]
ret 4
int1
xor ebx, ebx
add ebx, 0x3ed07703
shr ebx, 1
pop esi
xor ebx, esi
mov esi, 0x5c0433fb
xor eax, dword [esp + ebx*2]
shr esi, 7
xor esi, 0xb80867
xor esi, dword [ebx]
push esi
pop ecx
mov edi, 0xffffffa6
sub ecx, edi
mov ebx, dword [ecx - 0x5a]
mov ecx, 0x494b32f3
dec ebx
dec ecx
shr ecx, 6
xor ecx, 0x360a27bd
xor ebx, ecx
mov edx, ebx
xor edx, 0xffffffff
and edx, 0x47690a98
and ebx, 0xb896f567
or ebx, edx
xor ecx, ecx
add ecx, ebx
mov eax, 0xffffffff
xor ecx, eax
and ecx, 0x20558f56
and ebx, 0xdfaa70a9
or ebx, ecx
add ebx, 0
je 0x409c3f
retf
mov edi, 0xc2f91e4
sub edi, 0x89
push edi
mov ebx, 0x6b0a2c08
mov eax, ebx
shr eax, 7
mov ebx, 0x4d8a6276
xor eax, ebx
xor eax, 0x4d1ea7a4
mov ecx, 0
xor ecx, dword [eax]
push ecx
pop ebx
mov ecx, 0x7f2191d0
shr ecx, 6
mov esi, 0x691e0d62
xor esi, ecx
xor ebx, esi
mov ecx, 0x766f8e4d
xor ebx, ecx
xor ebx, 0x304a1e24
mov dword [esp - 8], 0x36b36369
xor dword [esp - 8], 0x36b36369
add dword [esp - 8], ebx
pop eax
add eax, 0xffffffff
add esp, 0xfffffffc
push esp
pop ebx
mov dword [ebx], eax
and eax, 0xffffffff
je 0x409b61
inc dword [ecx - 0x33c]
invalid
mov ebx, 0x5c6f5107
shr ebx, 7
xor eax, eax
add eax, 0x10b55860
xor eax, ebx
jmp 0x409ad7
mov edi, dword [esp]
mov edx, edi
mov esi, 4
add esp, esi
mov edi, 0x11
add edi, 0x2f
push edi
mov ebx, 0x103a
add ebx, 0xffffffc6
push ebx
mov esi, 0x354
sub esi, 0x42
push esi
mov eax, 0xffffff84
add eax, 0x7c
push eax
mov ebx, 0x62a811f4
mov ecx, ebx
shr ecx, 5
mov edi, 0x35750af
xor edi, ecx
xor eax, eax
add eax, edi
xor edi, edi
add edi, dword [eax]
call edi
invalid
inc dword [ebx]
cmp bh, bh
xlatb
xor edx, edx
add edx, eax
xchg edx, ecx
push ecx
pop edi
mov eax, edi
sub esp, 4
mov dword [esp], eax
mov eax, 0x14d9486
sub eax, 0x1d
push eax
xor edi, edi
add edi, 0x433d7784
shr edi, 6
pop esi
xor edi, esi
xor edx, edx
add edx, dword [edi]
push 0x4954e5b0
mov esi, 0x6272c0d4
shr esi, 4
pop eax
xor esi, eax
xor edx, esi
mov eax, 0x1050d2e6
xor edx, eax
xor edx, 0x2f651ab5
mov dword [ecx], edx
mov edx, 0xfffffffc
sub ecx, edx
mov esi, 0x1c22bd8a
shr esi, 4
xor esi, 0xfe3dd424
sub edi, esi
xor ebx, ebx
sub ebx, 0xf784c97d
shr ebx, 1
mov esi, 0x3fc3682
sub ebx, esi
xor ebx, edi
test ebx, ebx
jne 0x409be4
pop esi
call esi
pop esi
mov ebx, 0
xor ebx, dword [esp]
mov eax, 0xfffffffc
sub esp, eax
xor ebp, ebp
add ebp, dword [esp]
mov ecx, 0xfffffffc
sub esp, ecx
pop edi
mov eax, 0x405f0c
sub eax, 0x22
push eax
lea esp, [esp + 4]
jmp dword [esp - 4]
lea eax, [ebp + 0x14]
push 0x422618
push eax
mov dword [ebp + 0x14], str.there_is_no_such_archive
call sub.MSVCRT.dll__CxxThrowException
mov eax, ecx
push 4
xor ecx, ecx
pop edx
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], edx
mov dword [eax], 0x421780
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], ecx
mov dword [eax + 0x20], ecx
mov dword [eax + 0x24], edx
mov dword [eax + 0x14], 0x4213c4
mov dword [eax + 0x28], ecx
mov dword [eax + 0x2c], ecx
mov byte [eax + 0x30], cl
ret