Function at 0x423b50
Capabilities:
Encode data using xor

Disassembly:
push edi
xor edx, edx
push esi
push ebx
sub esp, 0x420
mov eax, dword [0x5398d0]
mov dword [esp + 0x41c], eax
xor eax, eax
lea esi, [esp + 0x1c]
mov eax, esi
call fcn.00423a20
mov eax, esi
call fcn.00423880
cmp dword [esp + 0x218], eax
jne 0x423e58
mov eax, esi
mov edx, 1
call fcn.00423a20
mov eax, esi
call fcn.00423880
cmp dword [esp + 0x218], eax
jne 0x423e49
mov eax, esi
mov edx, 2
call fcn.00423a20
mov eax, esi
call fcn.00423880
cmp dword [esp + 0x218], eax
jne 0x423e3a
xor eax, eax
lea esi, [esi]
mov edx, dword [eax + 0x4cd960]
xor dword [esi + eax], edx
add eax, 4
cmp eax, 0x200
jne 0x423bd0
mov eax, esi
call fcn.00423880
cmp eax, 0x53ed64b
jne 0x423e2b
xor eax, eax
lea esi, [esi]
nop
mov edx, dword [esi + eax]
xor edx, dword [eax + 0x4cd960]
mov dword [esi + eax], edx
add eax, 4
cmp eax, 0x200
jne 0x423c00
mov eax, esi
call fcn.00423880
cmp dword [esp + 0x218], eax
jne 0x423e1c
mov eax, esi
mov edx, 3
call fcn.00423a20
mov eax, esi
call fcn.00423880
cmp dword [esp + 0x218], eax
jne 0x423e0d
lea ebx, [esp + 0x15]
mov dword [esp + 4], 7
xor edx, edx
mov eax, esi
mov dword [esp], ebx
mov ecx, 0x2a
mov dword [esp + 0x15], 0x4030201
mov dword [esp + 0x18], 0x7060504
call fcn.00423a90
cmp dword [esp + 0x218], 0xb1f765d7
jne 0x423dfe
mov eax, esi
call fcn.00423880
cmp eax, 0xb1f765d7
jne 0x423def
mov dword [esp], ebx
mov ecx, 0x2a
mov edx, 1
mov eax, esi
mov dword [esp + 4], 7
call fcn.00423a90
cmp dword [esp + 0x218], 0x388b2759
jne 0x423de0
mov eax, esi
call fcn.00423880
cmp eax, 0x388b2759
jne 0x423dd1
mov dword [esp], ebx
mov ecx, 0x2a
mov edx, 2
mov eax, esi
mov dword [esp + 4], 7
call fcn.00423a90
cmp dword [esp + 0x218], 0xde10952b
jne 0x423dc2
mov eax, esi
call fcn.00423880
cmp eax, 0xde10952b
jne 0x423db3
xor eax, eax
lea esi, [esi]
mov edx, dword [esi + eax]
xor edx, dword [eax + 0x4cd960]
mov dword [esi + eax], edx
add eax, 4
cmp eax, 0x200
jne 0x423d20
mov eax, esi
call fcn.00423880
cmp dword [esp + 0x218], eax
jne 0x423d58
mov edx, str.jmb_get_sector_type_data___2
mov eax, 0xe7
call fcn.00423900
lea esi, [esi]
lea eax, [esp + 0x21c]
mov ecx, pe_nt_image_headers32
xor edx, edx
mov edi, eax
rep movsd dword es:[edi], dword [esi]
lea esi, [esi]
mov ecx, dword [eax + edx]
xor ecx, dword [edx + 0x4cd960]
mov dword [eax + edx], ecx
add edx, 4
cmp edx, 0x200
jne 0x423d70
call fcn.00423880
cmp dword [esp + 0x418], eax
jne 0x423d46
mov eax, dword [esp + 0x41c]
sub eax, dword [0x5398d0]
jne 0x423dae
add esp, 0x420
pop ebx
pop esi
pop edi
ret
call fcn.00485600
mov edx, str.jmb_check_crc_data_
mov eax, 0xe5
call fcn.00423900
mov edx, str.jmb_get_crc_data___0xde10952b
mov eax, 0xe4
call fcn.00423900
mov edx, str.jmb_check_crc_data_
mov eax, 0xe2
call fcn.00423900
mov edx, str.jmb_get_crc_data___0x388b2759
mov eax, 0xe1
call fcn.00423900
mov edx, str.jmb_check_crc_data_
mov eax, 0xdf
call fcn.00423900
mov edx, str.jmb_get_crc_data___0xb1f765d7
mov eax, 0xde
call fcn.00423900
mov edx, str.jmb_check_crc_data_
mov eax, 0xdb
call fcn.00423900
mov edx, str.jmb_check_crc_data_
mov eax, 0xd9
call fcn.00423900
mov edx, str.jmb_crc_data___0x053ed64b
mov eax, 0xd7
call fcn.00423900
mov edx, str.jmb_check_crc_data_
mov eax, 0xd5
call fcn.00423900
mov edx, str.jmb_check_crc_data_
mov eax, 0xd3
call fcn.00423900
mov edx, str.jmb_check_crc_data_
mov eax, 0xd0
call fcn.00423900
nop
lea esi, [esi]
nop
push ebp
mov ebp, esp
push edi
mov edi, ecx
push esi
push ebx
sub esp, 0x4c
mov eax, dword [ebp + 0x18]
mov ebx, dword [ebp + 8]
mov ecx, dword [ebp + 0x20]
mov edx, dword [ebp + 0x1c]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0x44], ecx
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x48], eax
mov eax, dword [0x5398d0]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebx + 8]
mov dword [ebp - 0x40], edx
mov edx, dword [ebx + 0xc]
mov ecx, dword [eax - 0xc]
mov dword [edi], eax
lea eax, [ebx + 0x10]
add ecx, edi
mov dword [ecx], edx
mov dword [ecx + 0x84], edi
lea ecx, [edi + 4]
mov dword [esp + 4], esi
mov dword [esp], eax
call fcn.00422000
mov eax, dword [ebx + 4]
mov edx, dword [ebx + 0x18]
sub esp, 8
xor ecx, ecx
mov dword [edi], eax
mov eax, dword [eax - 0xc]
mov dword [edi + eax], edx
mov eax, dword [ebx + 0x1c]
mov dword [edi + 0xc], esi
mov dword [edi + 4], eax
mov eax, dword [ebx]
mov edx, dword [ebx + 0x20]
mov dword [edi], eax
mov eax, dword [eax - 0xc]
mov dword [edi + eax], edx
mov eax, dword [ebx + 0x24]
mov edx, dword [ebp - 0x40]
mov word [edi + 0x14], cx
mov dword [edi + 4], eax
movzx eax, byte [ebp - 0x3c]
mov byte [edi + 0x11], dl
mov byte [edi + 0x10], al
movzx eax, byte [ebp - 0x44]
mov dword [edi + 0x18], 0
mov byte [edi + 0x12], al
movzx eax, byte [ebp - 0x48]
mov byte [edi + 0x13], al
movzx eax, dl
mov dword [esp + 0xc], eax
mov eax, dword [esi + 0x20]
mov dword [esp + 4], str._s__jmb39x_disk__u_
mov dword [esp + 8], eax
lea eax, [ebp - 0x34]
mov dword [esp], eax
call fcn.0045af10
mov eax, dword [edi]
mov edx, dword [ebp - 0x34]
lea esi, [ebp - 0x2c]
mov ebx, dword [eax - 0xc]
add ebx, edi
mov eax, dword [ebx + 0x20]
cmp edx, esi
je 0x423ff0
lea ecx, [ebx + 0x28]
cmp eax, ecx
je 0x423fd0
mov dword [ebx + 0x20], edx
mov edx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x28]
mov dword [ebx + 0x24], edx
mov edx, dword [ebp - 0x2c]
mov dword [ebx + 0x28], edx
test eax, eax
je 0x423fdf
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x30], 0
mov byte [eax], 0
mov eax, dword [ebp - 0x34]
cmp eax, esi
je 0x423f92
mov dword [esp], eax
call fcn.004ab140
mov dword [edi + 0x1c], 0
lea ecx, [edi + 0x1c]
add edi, 0x20
xor eax, eax
mov dword [edi + 0x1f8], 0
and edi, 0xfffffffc
sub ecx, edi
add ecx, 0x200
shr ecx, 2
rep stosd dword es:[edi], eax
mov eax, dword [ebp - 0x1c]
sub eax, dword [0x5398d0]
jne 0x42403e
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x20
mov eax, dword [ebp - 0x30]
mov dword [ebx + 0x20], edx
mov dword [ebx + 0x24], eax
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 0x28], eax
mov dword [ebp - 0x34], esi
mov eax, esi
jmp 0x423f79
lea edx, [ebx + 0x20]
lea ecx, [ebp - 0x34]
cmp ecx, edx
je 0x423fe2
mov edx, dword [ebp - 0x30]
test edx, edx
je 0x42401c
cmp edx, 1
je 0x424030
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [ebp - 0x30]
mov eax, dword [ebx + 0x20]
mov dword [ebx + 0x24], edx
mov byte [eax + edx], 0
mov eax, dword [ebp - 0x34]
jmp 0x423f79
movzx edx, byte [ebp - 0x2c]
mov byte [eax], dl
mov edx, dword [ebp - 0x30]
mov eax, dword [ebx + 0x20]
jmp 0x42401c
call fcn.00485600
mov esi, eax
jmp fcn.004ad954