Function at 0x405930
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov eax, dword [0x4ca180]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x14], 0
xor edi, edi
nop
mov ecx, dword [edi + 0x4cb400]
mov esi, ecx
mov dword [ebp - 0x1c], ecx
lea edx, [esi + 1]
nop
mov al, byte [esi]
inc esi
test al, al
jne 0x405960
mov eax, dword [0x4ce914]
sub esi, edx
push esi
push ecx
inc eax
push eax
call fcn.004654e0
add esp, 0xc
test eax, eax
jne 0x405995
mov eax, dword [0x4ce914]
movzx eax, byte [eax + esi + 1]
push eax
call fcn.00461d80
add esp, 4
test eax, eax
jne 0x4059f7
add edi, 8
inc ebx
cmp edi, 0x50
jb 0x405950
mov edi, 0xa
mov eax, dword [0x4ce914]
lea ebx, [eax + 1]
add ebx, esi
cmp dword [0x4ce640], 0
mov dword [ebp - 0x18], ebx
je 0x405a00
cmp edi, 4
je case.0x405a09.4
cmp edi, 9
je case.0x405a09.9
push dword [ebp - 0x1c]
push str.__s_is_not_allowed_after_perltest_n
push dword [0x4ceac8]
call fcn.00401240
add esp, 0xc
mov eax, 2
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
mov edi, dword [ebx*8 + 0x4cb404]
jmp 0x4059a3
cmp edi, 0xa
ja case.default.0x405a09
jmp dword [edi*4 + 0x406120]
push eax
push str._Unknown_command:__s
push dword [0x4ceac8]
call fcn.00401240
mov eax, dword [ebp - 0x14]
add esp, 0xc
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x14]
mov dword [0x4ce704], 0x1800
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x14]
mov dword [0x4ce640], 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
push 0
push 0x4ce7b8
mov edx, 2
mov ecx, ebx
call fcn.00402fb0
add esp, 8
cmp dword [0x4ce834], 0
jne case.default.0x405a09
test dword [0x4ce7bc], 0x80000
je case.default.0x405a09
mov eax, dword [ebp - 0x14]
mov dword [0x4ce834], 7
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
push 0x4ce918
push 0
mov edx, 4
mov ecx, ebx
call fcn.00402fb0
mov eax, dword [ebp - 0x14]
add esp, 8
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
xor eax, eax
xor esi, esi
mov word [0x4ce4c4], ax
mov dword [ebp - 0x10], esi
nop dword [eax]
movzx eax, byte [ebx]
push eax
call fcn.00461d80
add esp, 4
test eax, eax
je 0x405b25
movzx eax, byte [ebx + 1]
inc ebx
push eax
call fcn.00461d80
add esp, 4
test eax, eax
jne 0x405b10
mov dword [ebp - 0x18], ebx
cmp byte [ebx], 0
je 0x405c14
mov edi, 1
mov dword [ebp - 0x20], edi
nop word [eax + eax]
mov ecx, dword [edi*4 + 0x4c1530]
mov esi, ecx
mov dword [ebp - 0x24], ecx
lea edx, [esi + 1]
nop
mov al, byte [esi]
inc esi
test al, al
jne 0x405b50
sub esi, edx
mov edx, ebx
mov eax, esi
mov dword [ebp - 0x1c], edx
je 0x405b9f
movzx edi, byte [ecx]
dec eax
mov dword [ebp - 0x28], eax
movzx eax, byte [edx]
push eax
call fcn.0046224a
add esp, 4
mov ebx, eax
push edi
call fcn.0046224a
mov ecx, dword [ebp - 0x24]
add esp, 4
mov edx, dword [ebp - 0x1c]
inc ecx
inc edx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x1c], edx
sub ebx, eax
jne 0x405bc9
mov eax, dword [ebp - 0x28]
test eax, eax
jne 0x405b62
mov ebx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x20]
movzx eax, byte [esi + ebx]
push eax
call fcn.00461d80
add esp, 4
test eax, eax
je 0x405bcf
cmp edi, 2
je 0x405d41
mov esi, dword [ebp - 0x10]
test si, si
jne 0x405bd2
movzx esi, di
mov dword [ebp - 0x10], esi
jmp 0x405bd2
mov ebx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x20]
mov esi, dword [ebp - 0x10]
inc edi
mov dword [ebp - 0x20], edi
cmp edi, 7
jb 0x405b40
mov al, byte [ebx]
test al, al
je 0x405b00
nop dword [eax]
movzx eax, al
push eax
call fcn.00461d80
add esp, 4
test eax, eax
jne 0x405b00
mov al, byte [ebx + 1]
inc ebx
mov dword [ebp - 0x18], ebx
test al, al
jne 0x405bf0
jmp 0x405b00
mov eax, dword [ebp - 0x14]
mov word [0x4ce4c4], si
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
cmp dword [0x4ce484], 0
jg 0x405c61
push str._Cant_pop_off_an_empty_stack_n
push dword [0x4ceac8]
call fcn.00401240
add esp, 8
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
push 0xbc
push 0
push 0x4ce648
call fcn.0045d090
add esp, 0xc
mov edx, 1
mov ecx, ebx
push 0
push 0x4ce648
call fcn.00402fb0
add esp, 8
test eax, eax
je 0x405c4b
mov eax, dword [0x4ce484]
cmp edi, 6
jne 0x405ca8
dec eax
mov dword [0x4ce484], eax
mov eax, dword [eax*4 + 0x4ce708]
jmp 0x405cb7
push dword [eax*4 + 0x4ce704]
call fcn.00438e40
add esp, 4
mov ecx, dword [0x4ce6c4]
mov dword [0x4ceb34], eax
test ecx, ecx
je 0x405cd5
push ecx
push eax
call fcn.0042f620
add esp, 8
mov dword [0x4ce48c], eax
test dword [0x4ce64c], 0x200000
je 0x405ce6
call fcn.004040e0
test dword [0x4ce650], 0x8000
je 0x405cf7
call fcn.00404320
test dword [0x4ce64c], 0x220a0
je case.default.0x405a09
call fcn.00404590
test eax, eax
je case.default.0x405a09
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
cmp dword [0x4ce484], 0
jg 0x405d54
push str._No_stacked_patterns_to_save_n
push dword [0x4ceac8]
call fcn.00401240
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x10]
mov edx, 0x4c359c
push str.save
push eax
lea ecx, [ebx + 1]
call fcn.00405850
add esp, 8
test eax, eax
jne 0x40610c
push dword [0x4ce4b4]
lea eax, [ebp - 8]
push eax
lea eax, [ebp - 0xc]
push eax
push dword [0x4ce484]
push 0x4ce708
call fcn.0044e8b0
mov esi, eax
add esp, 0x14
test esi, esi
jns 0x405def
push dword [ebp - 0x10]
call fcn.00462952
add esp, 4
push esi
push str.Serialization
push str._s_failed:_error__d:
push dword [0x4ceac8]
call fcn.00401240
push 0x4c1ae4
mov edx, 0x4c1a4c
mov ecx, esi
call fcn.004043d0
add esp, 0x14
test eax, eax
jne case.default.0x405a09
mov eax, 2
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x10]
xor esi, esi
mov eax, dword [ebp - 8]
mov ecx, esi
shr eax, cl
movzx eax, al
push edi
push eax
call fcn.004618bb
add esi, 8
add esp, 8
cmp esi, 0x20
jb 0x405df4
push edi
push dword [ebp - 8]
push 1
push dword [ebp - 0xc]
call fcn.00465820
add esp, 0x10
cmp eax, dword [ebp - 8]
je 0x405e55
push str._Wrong_return_from_fwrite___n
push dword [0x4ceac8]
call fcn.00401240
push edi
call fcn.00462952
add esp, 0xc
mov eax, 2
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
push edi
call fcn.00462952
add esp, 4
push dword [ebp - 0xc]
call fcn.0043af50
mov eax, dword [0x4ce484]
add esp, 4
test eax, eax
jle 0x405e96
dec eax
mov dword [0x4ce484], eax
mov eax, dword [eax*4 + 0x4ce708]
push eax
mov dword [0x4ceb34], eax
call fcn.00438f20
mov eax, dword [0x4ce484]
add esp, 4
test eax, eax
jg 0x405e72
mov eax, dword [ebp - 0x14]
mov dword [0x4ceb34], 0
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
lea eax, [ebp - 0x10]
mov edx, 0x4c35d8
push str.load
push eax
lea ecx, [ebx + 1]
call fcn.00405850
add esp, 8
test eax, eax
jne 0x40610c
mov edi, dword [ebp - 0x10]
xor esi, esi
mov dword [ebp - 8], eax
nop dword [eax]
push edi
call fcn.004629c9
mov ecx, esi
add esp, 4
shl eax, cl
add esi, 8
mov ecx, dword [ebp - 8]
or ecx, eax
mov dword [ebp - 8], ecx
cmp esi, 0x20
jb 0x405ee0
push ecx
call fcn.0045f459
add esp, 4
mov dword [ebp - 0xc], eax
test eax, eax
jne 0x405f42
push dword [ebp - 8]
push str._Failed_to_get_memory__size__zu__for_load_n
push dword [0x4ceac8]
call fcn.00401240
add esp, 0xc
push edi
call fcn.00462952
add esp, 4
mov eax, 2
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0045b84f
mov esp, ebp
pop ebp
ret
push edi
push dword [ebp - 8]
push 1
push eax
call fcn.00465b1c
push edi
mov esi, eax
call fcn.00462952
add esp, 0x14
cmp esi, dword [ebp - 8]
je 0x405f85
push str._Wrong_return_from_fread___n
push dword [0x4ceac8]
call fcn.00401240
add esp, 8
mov dword [ebp - 0x14], 2
push dword [ebp - 0xc]
call fcn.0045f43e
jmp 0x406106
push dword [ebp - 0xc]
call fcn.0044ea00
mov esi, eax
add esp, 4
test esi, esi
jns 0x405fa1
push esi
push str.Get_number_of_codes
jmp 0x406028
mov ecx, dword [0x4ce484]
lea eax, [ecx + esi]
cmp eax, 0x14
jle 0x406002
cmp esi, 1
mov eax, 0x4c1a4c
mov edi, 0x4c3640
cmovne eax, edi
push eax
push esi
push str._Not_enough_space_on_pattern_stack_for__d_pattern_s_n
push dword [0x4ceac8]
call fcn.00401240
mov esi, 0x14
mov eax, 0x4c1a4c
sub esi, dword [0x4ce484]
cmp esi, 1
cmovne eax, edi
push eax
push esi
push str._Decoding__d_pattern_s_n
push dword [0x4ceac8]
call fcn.00401240
mov ecx, dword [0x4ce484]
add esp, 0x20
push dword [0x4ce4b4]
lea eax, [ecx*4 + 0x4ce708]
push dword [ebp - 0xc]
push esi
push eax
call fcn.0044e6d0
mov esi, eax
add esp, 0x10
test esi, esi
jns 0x406066
push esi
push str.Deserialization
push str._s_failed:_error__d:
push dword [0x4ceac8]
call fcn.00401240
push 0x4c1ae4
mov edx, 0x4c1a4c
mov ecx, esi
call fcn.004043d0
add esp, 0x14
neg eax
sbb ebx, ebx
and ebx, 0xfffffffe
push dword [ebp - 0xc]
add ebx, 2
mov dword [ebp - 0x14], ebx
call fcn.0045f43e
jmp 0x406106
push dword [ebp - 0xc]
add dword [0x4ce484], esi
call fcn.0045f43e
jmp 0x406106
lea eax, [ebp - 0x10]
mov edx, 0x4c35d8
push str.loadtables
push eax
lea ecx, [ebx + 1]
call fcn.00405850
add esp, 8
test eax, eax
jne 0x40610c
mov eax, dword [0x4ceb40]
mov esi, dword [ebp - 0x10]
test eax, eax
jne 0x4060cc
push 0x4ceb38
push 0xf
call fcn.004566c0
push dword [0x4ceb38]
call fcn.0045f459
add esp, 0xc
mov dword [0x4ceb40], eax
test eax, eax
jne 0x4060cc
push str._Failed:_malloc_failed_for_loadtables_n
jmp 0x4060eb
push esi
push dword [0x4ceb38]
push 1
push eax
call fcn.00465b1c
add esp, 0x10
cmp eax, dword [0x4ceb38]
je 0x406100
push str._Wrong_return_from_fread___n
push dword [0x4ceac8]
call fcn.00401240
mov dword [ebp - 0x14], 2
add esp, 8
push esi
call fcn.00462952
add esp, 4
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0045b84f
mov esp, ebp
pop ebp
ret