Function at 0x423940
Capabilities:
Encode data using xor
Get disk information

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x78
mov eax, dword [0x44f750]
mov dword [esp + 8], 0xf3a6f19d
mov dword [esp + 0xc], 0xff5dfd4b
mov dword [esp + 0x10], 0xfb4ef959
mov dword [esp + 0x14], 0xc776c585
mov dword [esp + 0x18], 0xc38ec170
mov dword [esp + 0x1c], 0xcf72cd6d
mov dword [esp + 0x20], 0xcba7c969
mov word [esp + 0x24], 0xd5d4
mov dword [esp + 0x26], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x21
ja 0x423a01
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 8]
mov esi, ecx
xor esi, 0x5b2f6bd4
and ecx, 0xdb2f6bd4
lea ecx, [esi + ecx*2]
lea esi, [ecx + edx]
not edx
or ecx, edx
sub edx, ecx
lea ecx, [esi + edx*2]
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x5c]
mov edx, ecx
not edx
and edx, 0x24
and ecx, 0xdb
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x22
jb 0x4239b0
lea ecx, [esp + 0x58]
lea esi, [esp + 8]
push ecx
push 0
push 0
push 0xe
push esi
push 0
call eax
mov ebx, dword [esp + 0x58]
test ebx, ebx
jns 0x423a24
mov eax, 0xffffffff
jmp 0x423a27
lea eax, [ebx + ebx]
push eax
call fcn.0040c580
add esp, 4
mov edi, eax
mov eax, dword [0x44f750]
mov dword [esp + 8], 0x8fd289ed
mov dword [esp + 0xc], 0x83258d3f
mov dword [esp + 0x10], 0x873a8121
mov dword [esp + 0x14], 0x9b2a85c5
mov dword [esp + 0x18], 0x9fda9928
mov dword [esp + 0x1c], 0x93269d3d
mov dword [esp + 0x20], 0x97f39131
mov word [esp + 0x24], 0x9594
mov dword [esp + 0x26], 0
mov byte [esp + 0x2a], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x22
ja 0x423ae1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 8]
mov ebp, ecx
xor ebp, 0x561ab5a2
and ecx, 0xd61ab5a2
lea ecx, [ecx*2]
add ecx, ebp
xor ecx, edx
mov dword [esp + 0x5c], ecx
mov ecx, dword [esp + 0x5c]
add cl, 0xd6
mov edx, dword [esp]
mov byte [esp + edx + 8], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x23
jb 0x423aa0
lea ecx, [esp + 0x58]
push ecx
push ebx
push edi
push 0xe
mov ebp, esi
push esi
push 0
call eax
mov eax, dword [esp + 0x58]
mov ecx, eax
add ecx, 9
jns 0x423b03
mov eax, 0xffffffff
jmp 0x423b0a
lea eax, [eax*2 + 0x12]
push eax
call fcn.0040c580
add esp, 4
mov esi, eax
mov dword [esp + 8], 0x570649ec
mov dword [esp + 0xc], 0x53fd55f5
mov dword [esp + 0x10], 0x5fff51e7
mov dword [esp + 0x14], 0x5bf75df7
mov dword [esp + 0x18], 0xa7a659e7
mov word [esp + 0x1c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x15
ja 0x423bad
nop
nop
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
not edx
or edx, 0x626b2eee
add edx, eax
xor eax, 0xe26b2eee
lea eax, [eax + edx*2]
add eax, 2
xor eax, ecx
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x5c]
mov ecx, eax
xor ecx, 0xa6
and eax, 0x59
add eax, eax
sub eax, ecx
mov ecx, dword [esp]
mov byte [esp + ecx + 8], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x16
jb 0x423b60
movzx ecx, word [edi]
mov eax, esi
test cx, cx
je 0x423bd1
lea edx, [edi + 2]
mov eax, esi
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x423bc0
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x423c01
lea edx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x423bf0
mov ebx, dword [esp + 0x8c]
mov word [eax], 0
lea eax, [esp + 0x74]
push eax
push esi
call fcn.00443080
add esp, 8
not eax
shr eax, 0x1f
jmp dword [eax*4 + 0x44ac5c]