Function at 0x457c44
Capabilities:
Read file on windows

Disassembly:
push ebp
lea ebp, [esp - 0x70]
sub esp, 0xb8
push ebx
push esi
push edi
mov dword [ebp + 0x44], ecx
push ecx
lea ecx, [ebp - 0x3c]
call fcn.0043ff76
lea eax, [ebp + 0x78]
push eax
call fcn.00437e65
pop ecx
lea ecx, [ebp + 0x28]
call fcn.0043dd7e
lea ecx, [ebp + 0xc]
call fcn.0043dd7e
lea ecx, [ebp - 0x20]
call fcn.0043dd7e
lea ecx, [ebp + 0x3c]
call fcn.0043dd7e
mov eax, dword [ebp + 0x78]
push 1
mov dword [ebp + 0x6c], eax
push 0x2c
lea eax, [ebp + 0x6c]
push eax
lea ecx, [ebp - 0x3c]
call fcn.0044edb8
push 0
lea ecx, [ebp + 0x28]
push ecx
push eax
call fcn.004408ab
mov esi, dword [ebp + 0x28]
xor eax, eax
mov ax, word [esi]
add esp, 0xc
xor edi, edi
test ax, ax
mov byte [ebp + 0x57], 0
mov byte [ebp + 0x55], 0
mov byte [ebp + 0x6a], 0
mov ecx, esi
je 0x457ceb
call fcn.00437e2d
test al, al
je 0x457cd5
mov edi, ecx
inc ecx
inc ecx
mov ax, word [ecx]
test ax, ax
jne 0x457cca
test edi, edi
je 0x457ceb
and word [edi], ax
mov esi, dword [ebp + 0x28]
inc edi
inc edi
test edi, edi
mov eax, esi
mov dword [ebp + 0x78], eax
je 0x457d6e
cmp word [esi], 0x2a
jne 0x457d6e
cmp word [eax + 2], 0x2d
je 0x457d6e
push 6
lea eax, [ebp + 0x78]
push eax
push str.nobom
call fcn.0043fbfd
add esp, 0xc
test al, al
je 0x457d1e
mov byte [ebp + 0x55], 1
jmp 0x457d62
push 0xa
lea eax, [ebp + 0x78]
push eax
push str.transonly
call fcn.0043fbfd
add esp, 0xc
test al, al
je 0x457d3b
mov byte [ebp + 0x57], 1
jmp 0x457d62
push 3
lea eax, [ebp + 0x78]
push eax
push 0x4af5a8
call fcn.0043fbfd
add esp, 0xc
test al, al
je 0x457d58
mov byte [ebp + 0x6a], 1
jmp 0x457d62
lea eax, [ebp + 0x78]
push eax
call fcn.00405196
pop ecx
mov eax, dword [ebp + 0x78]
cmp word [eax], 0x2a
mov esi, dword [ebp + 0x28]
je 0x457cfa
xor ebx, ebx
cmp edi, ebx
mov byte [ebp + 0x37], 0
mov byte [ebp - 0x11], 0
mov byte [ebp + 0x4f], 0
mov byte [ebp + 0x7b], 0
mov byte [ebp - 1], 0
mov byte [ebp + 0x56], 0
je 0x457dac
push edi
lea ecx, [ebp + 0x50]
call fcn.00446497
mov ecx, dword [ebp + 0x28]
mov eax, dword [ebp + 0x50]
mov dword [ebp + 0x50], ecx
lea ecx, [ebp + 0x50]
mov dword [ebp + 0x28], eax
call fcn.00437e1a
mov esi, dword [ebp + 0x28]
cmp byte [ebp + 0x6a], 0
je 0x458494
mov ecx, dword [ebp + 0x44]
push ebx
lea eax, [ebp + 0x28]
push eax
call fcn.00402d33
mov eax, dword [ebp + 0x6c]
cmp word [eax], 0x2c
jne 0x457dd0
add dword [ebp + 0x6c], 2
lea eax, [ebp + 0x6c]
push eax
call fcn.00437e65
mov eax, dword [ebp + 0x6c]
xor ebx, ebx
mov bx, word [eax]
xor edi, edi
cmp bx, di
pop ecx
mov dword [ebp + 0x60], ebx
je 0x45848a
add dword [ebp + 0x6c], 2
lea eax, [ebp + 0x6c]
push eax
call fcn.00437e65
mov eax, dword [ebp + 0x6c]
cmp word [eax], 0x2c
pop ecx
jne 0x457e0b
add dword [ebp + 0x6c], 2
lea eax, [ebp + 0x10]
push eax
or esi, 0xffffffff
lea eax, [ebp + 0x6c]
push eax
mov dword [ebp + 0x10], edi
mov dword [ebp + 0x14], edi
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], edi
mov dword [ebp + 4], esi
mov dword [ebp + 8], esi
mov dword [ebp - 0xc], edi
mov dword [ebp - 8], edi
mov dword [ebp - 0x28], edi
mov dword [ebp - 0x24], edi
mov dword [ebp + 0x18], 0xfffe0000
mov dword [ebp + 0x1c], esi
mov dword [ebp + 0x64], 1
call fcn.0046fb37
test eax, eax
pop ecx
pop ecx
jle 0x45848a
lea eax, [ebp + 0x64]
push eax
lea eax, [ebp + 0x6c]
push eax
call fcn.004051ad
test eax, eax
pop ecx
pop ecx
jle 0x45848a
cmp dword [ebp + 0x64], edi
jle 0x45848a
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp + 0x6c]
push eax
call fcn.0046fb37
cmp dword [ebp - 0x18], edi
pop ecx
pop ecx
jl 0x45848a
jg 0x457e97
cmp dword [ebp - 0x1c], edi
jb 0x45848a
lea eax, [ebp + 4]
push eax
lea eax, [ebp + 0x6c]
push eax
call fcn.0046fb37
pop ecx
pop ecx
mov edi, 0x4c1b94
push edi
call dword [sym.imp.KERNEL32.DLL_EnterCriticalSection]
mov ecx, dword [ebp + 0x44]
push 0
push esi
push 0
push dword [ebp + 0x28]
call fcn.0040f3c5
mov esi, eax
test esi, esi
jne 0x457ece
push edi
jmp 0x458484
mov ecx, dword [esi + 0x10]
mov eax, ecx
cdq
cmp dword [ebp - 0x18], edx
mov dword [ebp - 0x10], ecx
jg 0x45847f
jl 0x457eeb
cmp dword [ebp - 0x1c], eax
jae 0x45847f
test ecx, ecx
jle 0x45847f
cmp dword [ebp + 8], 0
jg 0x457f07
jl 0x457f01
cmp dword [ebp + 4], 0
ja 0x457f07
mov dword [ebp + 4], eax
mov dword [ebp + 8], edx
sub ecx, dword [ebp - 0x1c]
mov esi, dword [esi + 4]
mov eax, ecx
cdq
cmp dword [ebp + 8], edx
mov dword [ebp], esi
jl 0x457f25
jg 0x457f1f
cmp dword [ebp + 4], eax
jbe 0x457f25
mov dword [ebp + 4], eax
mov dword [ebp + 8], edx
mov eax, dword [ebp + 4]
cmp ecx, eax
mov dword [ebp + 0x2c], ecx
jle 0x457f32
mov dword [ebp + 0x2c], eax
cmp dword [ebp + 0x2c], 0
jle 0x45847f
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp + 0x14]
add esi, eax
cmp bx, 0x2d
jne 0x457f62
mov edi, dword [ebp + 0x10]
neg edi
adc ecx, 0
push 0x2b
neg ecx
pop ebx
mov dword [ebp + 0x10], edi
mov dword [ebp + 0x14], ecx
mov dword [ebp + 0x60], ebx
jmp 0x457f81
cmp bx, 0x3c
jne 0x457f7e
mov eax, dword [ebp + 0x10]
neg eax
adc ecx, 0
push 0x3e
neg ecx
pop ebx
mov dword [ebp + 0x10], eax
mov dword [ebp + 0x14], ecx
mov dword [ebp + 0x60], ebx
mov edi, dword [ebp + 0x10]
mov eax, ebx
or eax, 0x20
cmp ax, 0x68
push 0x6f
pop edx
je 0x457f9a
cmp ax, 0x6e
je 0x457f9a
cmp ax, dx
jne 0x457f9f
mov ebx, edx
mov dword [ebp + 0x60], ebx
cmp bx, 0x2b
je 0x457fc0
cmp bx, 0x5e
je 0x457fc0
cmp bx, 0x23
je 0x457fc0
cmp bx, 0x3e
je 0x457fc0
cmp bx, dx
jne 0x45847f
cmp bx, dx
mov eax, dword [ebp - 0x1c]
mov dword [ebp + 0x78], eax
jne 0x457fd9
cdq
cmp edx, ecx
jl 0x457fd9
jg 0x457fd6
cmp eax, edi
jbe 0x457fd9
mov dword [ebp + 0x78], edi
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp + 0x6c]
push eax
call fcn.0046fb37
xor eax, eax
cmp dword [ebp - 0xc], eax
pop ecx
pop ecx
jne 0x458000
cmp dword [ebp - 8], eax
jne 0x458003
mov ecx, dword [ebp + 4]
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp + 8]
mov dword [ebp - 8], ecx
cmp dword [ebp - 8], eax
jl 0x458014
jg 0x45800c
cmp dword [ebp - 0xc], eax
jbe 0x458014
mov ebx, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
jmp 0x458021
mov ebx, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
neg ebx
adc edi, 0
neg edi
lea eax, [ebp + 0x18]
push eax
lea eax, [ebp + 0x6c]
push eax
call fcn.0046fb37
cmp dword [ebp + 0x1c], 0
pop ecx
pop ecx
jg 0x45807d
jl 0x45803e
cmp dword [ebp + 0x18], 0
ja 0x45807d
cmp dword [ebp + 0x18], 0xfffe0000
jne 0x45804d
cmp dword [ebp + 0x1c], 0xffffffff
je 0x458064
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp + 0x78]
push edi
cdq
push ebx
push edx
push eax
call fcn.00492e60
cdq
mov dword [ebp + 0x18], eax
mov dword [ebp + 0x1c], edx
cmp dword [ebp + 0x1c], 0
jg 0x45807d
jl 0x458072
cmp dword [ebp + 0x18], 0
ja 0x45807d
and dword [ebp + 0x1c], 0
mov dword [ebp + 0x18], 1
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp + 0x6c]
push eax
call fcn.0046fb37
cmp dword [ebp - 0x28], 0
pop ecx
pop ecx
jne 0x4580a4
cmp dword [ebp - 0x24], 0
jne 0x4580a4
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 0x2c]
mov ecx, dword [ebp + 0x2c]
mov ebx, dword [ebp + 0x10]
and eax, 3
sub ecx, eax
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp + 0x64]
mov dword [ebp + 0x38], eax
mov eax, dword [ebp]
sar ecx, 8
add eax, ebx
test ecx, ecx
mov dword [ebp - 0x10], esi
mov dword [ebp + 0x30], eax
mov dword [ebp + 0x48], ecx
jg 0x4580d6
xor ecx, ecx
inc ecx
mov dword [ebp + 0x48], ecx
movzx edi, byte [ebp + 0x64]
mov eax, dword [ebp + 0x2c]
cdq
idiv edi
cmp word [ebp + 0x60], 0x3e
mov dword [ebp + 0x64], edi
mov dword [ebp - 0x48], edx
mov dword [ebp + 0x24], eax
jne 0x4580f6
mov byte [ebp + 0x6b], 2
jmp 0x4580ff
cmp word [ebp + 0x60], 0x5e
sete byte [ebp + 0x6b]
mov eax, edi
cdq
idiv ecx
lea edx, [eax - 1]
imul edx, ecx
mov dword [ebp + 0x58], edx
cdq
sub eax, edx
sar eax, 1
mov edx, eax
imul edx, ecx
mov dword [ebp + 0x44], eax
mov eax, edi
sub eax, edx
add dword [ebp + 0x18], 0xffffffff
mov dword [ebp + 0x5c], eax
adc dword [ebp + 0x1c], 0xffffffff
js 0x45846d
jle 0x458463
cmp word [ebp + 0x60], 0x23
jne 0x45818f
mov edi, dword [ebp + 0x30]
mov eax, dword [ebp - 0x40]
lea ecx, [edi + eax]
jmp 0x458155
mov edx, dword [esi]
mov eax, dword [edi]
mov dword [edi], edx
add edi, 4
mov dword [esi], eax
add esi, 4
cmp edi, ecx
jb 0x458147
cmp dword [ebp + 0x38], 0
jle 0x458440
push dword [ebp + 0x38]
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.004128b6
push dword [ebp + 0x38]
push edi
push esi
call fcn.004128b6
push dword [ebp + 0x38]
lea eax, [ebp - 0x44]
push eax
push edi
call fcn.004128b6
add esp, 0x24
jmp 0x458440
cmp word [ebp + 0x60], 0x6f
jne 0x458232
cmp dword [ebp + 0x48], 1
mov eax, dword [ebp + 0x24]
jg 0x4581db
dec eax
js 0x458440
mov edi, dword [ebp + 0x44]
dec edi
inc eax
mov dword [ebp + 0x78], eax
mov eax, dword [ebp + 0x58]
add eax, esi
test edi, edi
jl 0x4581ce
lea edx, [edi + 1]
mov bl, byte [eax]
mov cl, byte [esi]
mov byte [esi], bl
inc esi
mov byte [eax], cl
dec eax
dec edx
jne 0x4581be
mov ebx, dword [ebp + 0x10]
add esi, dword [ebp + 0x5c]
dec dword [ebp + 0x78]
jne 0x4581b2
jmp 0x458440
dec eax
js 0x458440
mov edi, dword [ebp + 0x44]
dec edi
inc eax
mov dword [ebp + 0x20], eax
mov eax, dword [ebp + 0x58]
add eax, esi
test edi, edi
jl 0x458225
mov edx, dword [ebp + 0x48]
lea ecx, [edi + 1]
dec edx
mov dword [ebp + 0x50], ecx
test edx, edx
jl 0x458219
lea ecx, [edx + 1]
mov dword [ebp + 0x78], ecx
mov bl, byte [eax]
mov cl, byte [esi]
mov byte [esi], bl
inc esi
mov byte [eax], cl
inc eax
dec dword [ebp + 0x78]
jne 0x458207
mov ebx, dword [ebp + 0x10]
mov ecx, dword [ebp + 0x48]
add ecx, ecx
sub eax, ecx
dec dword [ebp + 0x50]
jne 0x4581fd
add esi, dword [ebp + 0x5c]
dec dword [ebp + 0x20]
jne 0x4581ea
jmp 0x458440
mov eax, dword [ebp - 0x48]
xor ecx, ecx
mov edi, esi
sub edi, eax
add edi, dword [ebp + 0x2c]
mov byte [ebp + 0x7b], bl
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x20], ecx
mov dword [ebp], ecx
mov dword [ebp - 0x30], ecx
mov dword [ebp - 0x2c], ecx
cmp dword [ebp + 0x64], 8
mov dword [ebp + 0x6c], edi
jl 0x4582eb
and byte [ebp + 0x7b], 0x3f
mov al, 0x40
sub al, byte [ebp + 0x7b]
cmp esi, edi
mov byte [ebp + 0x55], al
jae 0x4583f1
movzx ecx, byte [ebp + 0x6b]
mov dword [ebp + 0x40], ecx
mov ecx, dword [ebp + 0x40]
sub ecx, 0
je 0x4582d7
dec ecx
je 0x4582c6
dec ecx
jne 0x4582df
mov edi, dword [esi]
mov ebx, dword [esi + 4]
movzx ecx, al
mov eax, edi
mov edx, ebx
call fcn.004956d0
mov ecx, edx
mov dword [ebp + 8], ecx
movzx ecx, byte [ebp + 0x10]
mov dword [ebp - 0x18], eax
mov eax, edi
mov edx, ebx
call fcn.004957a0
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp + 0x6c]
mov ebx, dword [ebp + 0x10]
or ecx, eax
mov eax, dword [ebp + 8]
or eax, edx
mov dword [esi + 4], eax
mov al, byte [ebp + 0x55]
mov dword [esi], ecx
jmp 0x4582df
cmp word [ebp + 0x60], 0x5e
jne 0x4582df
mov ecx, dword [ebp + 0x14]
xor dword [esi], ebx
xor dword [esi + 4], ecx
jmp 0x4582df
add dword [esi], ebx
mov ecx, dword [ebp + 0x14]
adc dword [esi + 4], ecx
add esi, dword [ebp + 0x64]
cmp esi, edi
jb 0x458278
jmp 0x4583f1
cmp dword [ebp + 0x64], 4
jl 0x458346
and byte [ebp + 0x7b], 0x1f
mov dl, 0x20
sub dl, byte [ebp + 0x7b]
cmp esi, edi
jae 0x4583f1
movzx eax, byte [ebp + 0x6b]
mov dword [ebp + 0x40], eax
mov eax, dword [ebp + 0x40]
sub eax, 0
je 0x458338
dec eax
je 0x45832d
dec eax
jne 0x45833a
mov eax, dword [esi]
mov ebx, eax
mov cl, dl
shl ebx, cl
mov cl, byte [ebp + 0x7b]
shr eax, cl
or ebx, eax
mov dword [esi], ebx
mov ebx, dword [ebp + 0x10]
jmp 0x45833a
cmp word [ebp + 0x60], 0x5e
jne 0x45833a
xor dword [esi], ebx
jmp 0x45833a
add dword [esi], ebx
add esi, dword [ebp + 0x64]
cmp esi, edi
jb 0x458309
jmp 0x4583f1
cmp dword [ebp + 0x64], 2
jl 0x4583a5
and byte [ebp + 0x7b], 0xf
mov dl, 0x10
sub dl, byte [ebp + 0x7b]
cmp esi, edi
jae 0x4583f1
movzx eax, byte [ebp + 0x6b]
mov dword [ebp + 0x40], eax
mov eax, dword [ebp + 0x40]
sub eax, 0
je 0x458399
dec eax
je 0x45838d
dec eax
jne 0x45839c
xor eax, eax
mov ax, word [esi]
mov cl, dl
mov ebx, eax
shl ebx, cl
mov cl, byte [ebp + 0x7b]
shr ax, cl
or ebx, eax
mov word [esi], bx
mov ebx, dword [ebp + 0x10]
jmp 0x45839c
cmp word [ebp + 0x60], 0x5e
jne 0x45839c
xor word [esi], bx
jmp 0x45839c
add word [esi], bx
add esi, dword [ebp + 0x64]
cmp esi, edi
jb 0x458364
jmp 0x4583f1
and byte [ebp + 0x7b], 7
mov dl, 8
sub dl, byte [ebp + 0x7b]
cmp esi, edi
jae 0x4583f1
movzx eax, byte [ebp + 0x6b]
mov dword [ebp + 0x40], eax
mov eax, dword [ebp + 0x40]
sub eax, 0
je 0x4583e8
dec eax
je 0x4583dd
dec eax
jne 0x4583ea
mov al, byte [esi]
mov bl, al
mov cl, dl
shl bl, cl
mov cl, byte [ebp + 0x7b]
shr al, cl
or bl, al
mov byte [esi], bl
mov ebx, dword [ebp + 0x10]
jmp 0x4583ea
cmp word [ebp + 0x60], 0x5e
jne 0x4583ea
xor byte [esi], bl
jmp 0x4583ea
add byte [esi], bl
add esi, dword [ebp + 0x64]
cmp esi, edi
jb 0x4583b9
cmp dword [ebp + 0x50], 0
jle 0x458428
cmp word [ebp + 0x60], 0x3e
je 0x458428
mov edi, dword [ebp + 0x50]
push edi
lea eax, [ebp - 0x30]
push esi
push eax
call fcn.004128b6
mov dword [ebp + 0x20], edi
mov edi, dword [ebp + 0x64]
add esp, 0xc
and dword [ebp + 0x50], 0
mov dword [ebp], esi
lea esi, [ebp - 0x30]
lea edi, [ebp + edi - 0x30]
jmp 0x458250
cmp dword [ebp + 0x20], 0
je 0x458440
push dword [ebp + 0x20]
lea eax, [ebp - 0x30]
push eax
push dword [ebp]
call fcn.004128b6
add esp, 0xc
mov esi, dword [ebp - 0x10]
add esi, dword [ebp - 0x28]
mov eax, dword [ebp - 0xc]
add dword [ebp + 0x30], eax
add dword [ebp + 0x18], 0xffffffff
mov dword [ebp - 0x10], esi
adc dword [ebp + 0x1c], 0xffffffff
cmp dword [ebp + 0x1c], 0
jg 0x458135
jl 0x45846d
cmp dword [ebp + 0x18], 0
jae 0x458135
push 0x4c1b94
call dword [sym.imp.KERNEL32.DLL_LeaveCriticalSection]
xor esi, esi
jmp 0x458c7b
push 0x4c1b94
call dword [sym.imp.KERNEL32.DLL_LeaveCriticalSection]
mov esi, 0x80070057
jmp 0x458c7b
mov ecx, dword [ebp + 0x6c]
push 0x2c
pop edi
cmp word [ecx], di
lea eax, [ecx + 2]
mov dword [ebp + 8], eax
jne 0x4584c8
push 1
mov dword [ebp + 0x6c], eax
push edi
lea eax, [ebp + 0x6c]
push eax
lea ecx, [ebp - 0x3c]
call fcn.0044edb8
push ebx
lea ecx, [ebp + 0xc]
push ecx
push eax
call fcn.00440967
mov esi, dword [ebp + 0x28]
add esp, 0xc
mov eax, dword [ebp + 0x6c]
cmp word [eax], di
jne 0x4584f4
add dword [ebp + 0x6c], 2
push 1
push edi
lea eax, [ebp + 0x6c]
push eax
lea ecx, [ebp - 0x3c]
call fcn.0044edb8
push ebx
lea ecx, [ebp - 0x20]
push ecx
push eax
call fcn.004408ab
mov esi, dword [ebp + 0x28]
add esp, 0xc
mov eax, dword [ebp + 0x6c]
cmp word [eax], di
jne 0x458520
add dword [ebp + 0x6c], 2
push 1
push edi
lea eax, [ebp + 0x6c]
push eax
lea ecx, [ebp - 0x3c]
call fcn.0044edb8
push ebx
lea ecx, [ebp + 0x3c]
push ecx
push eax
call fcn.004408ab
mov esi, dword [ebp + 0x28]
add esp, 0xc
mov ax, word [esi]
cmp ax, bx
je 0x458c78
mov ecx, dword [ebp + 0xc]
cmp word [ecx], bx
je 0x458c78
mov ecx, dword [ebp - 0x20]
cmp word [ecx], bx
je 0x458c78
mov edx, dword [ebp + 0x3c]
cmp word [edx], bx
je 0x458c78
xor edi, edi
push 0x2a
mov ebx, ecx
pop ecx
cmp ax, cx
mov dword [ebp + 0x60], edi
mov dword [ebp + 0x24], edi
mov dword [ebp + 0x64], edi
mov dword [ebp + 0x40], edi
mov dword [ebp + 0x50], edi
mov dword [ebp + 0x20], edi
mov dword [ebp + 0x2c], edi
mov dword [ebp + 0x30], edi
mov byte [ebp + 0x6b], 0
jne 0x4585a4
cmp word [esi + 2], cx
jne 0x458595
add esi, 4
cmp word [esi], cx
mov byte [ebp + 0x4f], 2
mov byte [ebp + 0x37], al
jne 0x4585a7
inc esi
inc esi
mov byte [ebp + 0x4f], 3
jmp 0x4585a7
cmp ax, cx
jne 0x4585a4
mov al, byte [esi]
mov byte [ebp + 0x37], al
add esi, 2
jmp 0x4585a7
mov al, byte [ebp - 0x11]
cmp word [esi], 0x2d
jne 0x4585b1
mov al, byte [esi]
inc esi
inc esi
test al, al
je 0x45848a
push esi
push 0x4af5a4
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x4585d3
mov byte [ebp + 0x6b], 1
jmp 0x4586e6
push esi
push str.ANSI
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x4585ec
mov dword [ebp + 0x60], edi
jmp 0x4586e6
push esi
push 0x4af5a0
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x458609
mov dword [ebp + 0x60], 0x3a8
jmp 0x4586e6
push esi
push str.BIG5
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x458626
mov dword [ebp + 0x60], 0x3b6
jmp 0x4586e6
push esi
push str.UTF8
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x458643
mov dword [ebp + 0x60], 0xfde9
jmp 0x4586e6
push esi
push str.UTF7
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x458660
mov dword [ebp + 0x60], 0xfde8
jmp 0x4586e6
push esi
push str.UNICODE
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x45867a
mov dword [ebp + 0x64], 0x4b0
jmp 0x4586e6
push esi
push 0x4a7b50
call fcn.004391ba
test al, al
pop ecx
pop ecx
jne 0x458671
push esi
push str.UNICODEB
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x4586a5
mov dword [ebp + 0x64], 0x4b1
jmp 0x4586e6
push esi
push str.UNIB
call fcn.004391ba
test al, al
pop ecx
pop ecx
jne 0x45869c
xor ecx, ecx
mov cx, word [esi]
push ecx
call fcn.004129ca
add esp, 4
test al, al
je 0x4586d4
push esi
call fcn.0043e91d
pop ecx
mov dword [ebp + 0x60], eax
jmp 0x4586e6
cmp cx, di
jne 0x45848a
xor eax, eax
inc eax
mov dword [ebp + 0x64], eax
mov dword [ebp + 0x50], eax
mov edx, dword [ebp - 0x20]
mov ax, word [edx]
cmp ax, 0x2a
jne 0x458717
cmp word [edx + 2], ax
jne 0x458705
mov byte [ebp + 0x7b], al
mov cl, al
mov byte [ebp + 0x56], al
lea ebx, [edx + 4]
jmp 0x45871a
cmp ax, 0x2a
jne 0x458717
mov al, byte [edx]
mov byte [ebp + 0x7b], al
mov cl, al
lea ebx, [edx + 2]
jmp 0x45871a
mov cl, byte [ebp - 1]
cmp word [ebx], 0x2d
jne 0x458724
mov cl, byte [ebx]
inc ebx
inc ebx
test cl, cl
je 0x45848a
push ebx
push str.ANSI
call fcn.004391ba
test al, al
pop ecx
pop ecx
mov esi, 0x4ac848
mov edi, 0x4ac84c
je 0x458750
and dword [ebp + 0x24], 0
jmp 0x458865
push ebx
push 0x4af5a0
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x45876d
mov dword [ebp + 0x24], 0x3a8
jmp 0x458865
push ebx
push str.BIG5
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x45878a
mov dword [ebp + 0x24], 0x3b6
jmp 0x458865
push ebx
push str.UTF8
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x4587b5
mov dword [ebp + 0x24], 0xfde9
mov dword [ebp + 0x30], 0x4ac850
mov dword [ebp + 0x2c], 3
jmp 0x458865
push ebx
push str.UTF7
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x4587d2
mov dword [ebp + 0x24], 0xfde8
jmp 0x458865
push ebx
push str.UNICODE
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x4587f6
mov dword [ebp + 0x40], 0x4b0
mov dword [ebp + 0x30], esi
mov dword [ebp + 0x2c], 2
jmp 0x458865
push ebx
push 0x4a7b50
call fcn.004391ba
test al, al
pop ecx
pop ecx
jne 0x4587e3
push ebx
push str.UNICODEB
call fcn.004391ba
test al, al
pop ecx
pop ecx
jne 0x458829
push ebx
push str.UNIB
call fcn.004391ba
test al, al
pop ecx
pop ecx
je 0x458835
mov dword [ebp + 0x40], 0x4b1
mov dword [ebp + 0x30], edi
jmp 0x4587ed
xor ecx, ecx
mov cx, word [ebx]
push ecx
call fcn.004129ca
add esp, 4
test al, al
je 0x458853
push ebx
call fcn.0043e91d
pop ecx
mov dword [ebp + 0x24], eax
jmp 0x458865
test cx, cx
jne 0x45848a
xor eax, eax
inc eax
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x20], eax
xor esi, esi
cmp byte [ebp + 0x55], 0
je 0x458870
mov dword [ebp + 0x30], esi
lea ecx, [ebp + 0x5c]
mov dword [ebp + 0x58], esi
call fcn.0043dc57
xor edi, edi
cmp byte [ebp + 0x37], 0
mov byte [ebp + 0x6a], 0
jne 0x458a0b
mov eax, dword [ebp + 8]
push 1
mov dword [ebp + 0x6c], eax
push 0x2c
lea eax, [ebp + 0x6c]
push eax
lea ecx, [ebp - 0x3c]
mov dword [ebp + 0x38], esi
call fcn.0044edb8
push esi
lea ecx, [ebp + 0xc]
push ecx
push eax
call fcn.004408ab
push dword [ebp + 0xc]
call fcn.0041161a
add esp, 0x10
push esi
push 0x80
push 3
push esi
push 7
push 0x80000000
push eax
lea ecx, [ebp + 0x38]
call fcn.004051d2
mov edi, dword [ebp + 0x38]
cmp edi, esi
jne 0x4588e7
lea ecx, [ebp + 0x38]
call fcn.00402b5a
jmp 0x458c68
push 2
xor esi, esi
push esi
push esi
push edi
call fcn.0043908b
push 1
push esi
push esi
push edi
call fcn.0043908b
push esi
push esi
push esi
push edi
mov ebx, eax
call fcn.0043908b
add esp, 0x30
lea eax, [ebx + 0xa]
push eax
lea ecx, [ebp + 0x5c]
call fcn.0043dc99
mov esi, dword [ebp + 0x5c]
push 0
lea eax, [ebp - 0x10]
push eax
push ebx
mov byte [esi + 2], 0
mov byte [esi + 1], 0
push esi
mov byte [esi], 0
or dword [ebp - 0x10], 0xffffffff
push edi
call dword [sym.imp.KERNEL32.DLL_ReadFile]
mov eax, dword [ebp - 0x10]
test eax, eax
mov edi, eax
jl 0x4588da
and dword [ebp + 0x48], 0
add eax, esi
cmp byte [ebp + 0x6b], 0
mov byte [eax + 2], 0
mov byte [eax + 1], 0
mov byte [eax], 0
jne 0x458961
cmp dword [ebp + 0x64], 0x4b0
jne 0x45898b
push 2
push 0x4ac848
push esi
call fcn.00437f1d
add esp, 0xc
test eax, eax
jne 0x458985
mov dword [ebp + 0x64], 0x4b0
mov dword [ebp + 0x48], 2
jmp 0x4589e2
cmp byte [ebp + 0x6b], 0
jne 0x458994
cmp dword [ebp + 0x64], 0x4b1
jne 0x4589b7
push 2
push 0x4ac84c
push esi
call fcn.00437f1d
add esp, 0xc
test eax, eax
jne 0x4589b1
mov dword [ebp + 0x64], 0x4b1
jmp 0x45897c
cmp byte [ebp + 0x6b], 0
jne 0x4589c0
cmp dword [ebp + 0x60], 0xfde9
jne 0x4589f7
push 3
push 0x4ac850
push esi
call fcn.00437f1d
add esp, 0xc
test eax, eax
jne 0x4589f7
mov dword [ebp + 0x60], 0xfde9
mov dword [ebp + 0x48], 3
mov eax, dword [ebp + 0x48]
sub ebx, eax
add ebx, 3
push ebx
add eax, esi
push eax
push esi
call fcn.0041286c
add esp, 0xc
sub edi, dword [ebp + 0x48]
jns 0x4589fe
xor edi, edi
lea ecx, [ebp + 0x38]
call fcn.00402b5a
jmp 0x458aea
cmp byte [ebp + 0x4f], 0
je 0x458aa6
mov ecx, dword [ebp + 0x44]
xor esi, esi
push esi
lea eax, [ebp + 0xc]
push eax
call fcn.00402d33
mov ecx, dword [ebp + 0x44]
push esi
push 0xffffffffffffffff
push esi
push dword [ebp + 0xc]
call fcn.0040f3c5
mov ebx, eax
cmp ebx, esi
je 0x458a87
cmp byte [ebp + 0x4f], 3
jne 0x458a55
push dword [ebx + 4]
lea eax, [ebp + 0x5c]
push eax
call fcn.00441f25
pop ecx
pop ecx
mov edi, eax
mov byte [ebp + 0x6a], 2
jmp 0x458a91
mov edi, dword [ebx + 0x10]
lea eax, [edi + 8]
push eax
lea ecx, [ebp + 0x5c]
call fcn.0043dc99
mov esi, dword [ebp + 0x5c]
push 8
lea eax, [edi + esi]
push 0
push eax
call fcn.00492e00
push edi
push dword [ebx + 4]
push esi
call fcn.004128b6
add esp, 0x18
mov byte [ebp + 0x6a], 1
jmp 0x458a94
push 8
lea ecx, [ebp + 0x5c]
call fcn.0043dc99
mov esi, dword [ebp + 0x5c]
push 8
lea eax, [edi + esi]
push 0
push eax
call fcn.00492e00
add esp, 0xc
jmp 0x458aea
cmp dword [ebp + 0x50], esi
je 0x458ad3
push 0xffffffffffffffff
push dword [ebp + 0xc]
lea ecx, [ebp + 0x5c]
call fcn.0043dea2
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.DLL_lstrlenW]
mov edi, eax
shl edi, 1
lea eax, [edi + 8]
push eax
lea ecx, [ebp + 0x5c]
call fcn.0043dc99
jmp 0x458ae3
push dword [ebp + 0xc]
lea eax, [ebp + 0x5c]
push eax
call fcn.00441f25
pop ecx
pop ecx
mov edi, eax
mov esi, dword [ebp + 0x5c]
mov byte [ebp + 0x6a], 2
test edi, edi
jl 0x458c68
cmp byte [ebp + 0x6b], 0
je 0x458b75
cmp byte [ebp + 0x6a], 0
je 0x458b75
push 2
push 0x4ac848
push esi
xor ebx, ebx
call fcn.00437f1d
add esp, 0xc
test eax, eax
push 2
jne 0x458b1f
mov dword [ebp + 0x64], 0x4b0
jmp 0x458b59
push 0x4ac84c
push esi
call fcn.00437f1d
add esp, 0xc
test eax, eax
jne 0x458b3c
mov dword [ebp + 0x64], 0x4b1
push 2
jmp 0x458b59
push 3
push 0x4ac850
push esi
call fcn.00437f1d
add esp, 0xc
test eax, eax
jne 0x458b6f
mov dword [ebp + 0x60], 0xfde9
push 3
pop ebx
mov eax, edi
sub eax, ebx
add eax, 4
push eax
lea eax, [ebx + esi]
push eax
push esi
call fcn.0041286c
add esp, 0xc
sub edi, ebx
jns 0x458b75
xor edi, edi
lea ecx, [ebp + 0x6c]
mov dword [ebp + 0x48], esi
mov dword [ebp], esi
call fcn.0043dd7e
mov ebx, dword [ebp + 0x24]
cmp ebx, dword [ebp + 0x60]
jne 0x458c14
mov eax, dword [ebp + 0x40]
cmp eax, dword [ebp + 0x64]
jne 0x458c14
cmp byte [ebp + 0x56], 0
je 0x458bb5
push 0
lea eax, [ebp + 0x3c]
push eax
push edi
push esi
push dword [ebp + 0x3c]
push dword [ebp + 0x44]
call fcn.0044983b
add esp, 0x18
jmp 0x458bf7
cmp byte [ebp + 0x7b], 0
jne 0x458bc7
push edi
push esi
lea ecx, [ebp + 0x58]
call fcn.00437d7d
jmp 0x458bf7
cmp dword [ebp + 0x20], 0
jne 0x458be0
push edi
lea eax, [ebp + 0x6c]
push esi
push eax
call fcn.00441e9e
add esp, 0xc
push dword [ebp + 0x6c]
jmp 0x458bec
cmp dword [ebp + 0x50], 0
je 0x458beb
push dword [ebp + 0xc]
jmp 0x458bec
push esi
push dword [ebp + 0x3c]
mov ecx, dword [ebp + 0x44]
call fcn.0043d658
lea ecx, [ebp + 0x6c]
call fcn.00437e1a
lea ecx, [ebp + 0x5c]
call fcn.00437e1a
lea ecx, [ebp + 0x58]
call fcn.00402b5a
jmp 0x458478
cmp dword [ebp + 0x64], 0x4b1
jne 0x458c30
push edi
push esi
mov dword [ebp + 0x64], 0x4b0
call fcn.0043c1c0
pop ecx
pop ecx
and edi, 0xfffffffe
cmp byte [ebp + 0x7b], 0
jne 0x458caf
push dword [ebp + 0x3c]
call fcn.0041161a
pop ecx
push 0
push 0x80
push 4
push 0
push 7
push 0x40000000
push eax
lea ecx, [ebp + 0x58]
call fcn.004051d2
cmp dword [ebp + 0x58], 0
jne 0x458caf
lea ecx, [ebp + 0x6c]
call fcn.00437e1a
lea ecx, [ebp + 0x5c]
call fcn.00437e1a
lea ecx, [ebp + 0x58]
call fcn.00402b5a
xor esi, esi
inc esi
lea ecx, [ebp + 0x3c]
call fcn.00437e1a
lea ecx, [ebp - 0x20]
call fcn.00437e1a
lea ecx, [ebp + 0xc]
call fcn.00437e1a
lea ecx, [ebp + 0x28]
call fcn.00437e1a
lea ecx, [ebp - 0x3c]
call fcn.00437e1a
pop edi
mov eax, esi
pop esi
pop ebx
add ebp, 0x70
leave
ret 8
and dword [ebp + 0x50], 0
mov eax, 0x3a8
cmp ebx, eax
mov ebx, 0x3b6
jne 0x458cc6
cmp dword [ebp + 0x60], ebx
je 0x458cd0
cmp dword [ebp + 0x60], eax
jne 0x458d3e
cmp dword [ebp + 0x24], ebx
jne 0x458d3e
cmp byte [ebp + 0x57], 0
je 0x458cda
mov byte [ebp + 0x57], 3
lea ecx, [ebp + 0x38]
call fcn.0043dc57
xor eax, eax
cmp dword [ebp + 0x24], ebx
sete al
push eax
lea eax, [ebp + 0x38]
push eax
push esi
call fcn.00441fb2
mov eax, esi
mov esi, dword [ebp + 0x38]
add esp, 0xc
push esi
mov dword [ebp + 0x5c], esi
mov dword [ebp + 0x38], eax
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
cmp byte [ebp + 0x57], 3
mov edi, eax
mov dword [ebp + 0x48], esi
jne 0x458d36
cmp byte [ebp + 0x7b], 0
jne 0x458d36
test edi, edi
jle 0x458d29
push edi
push esi
lea ecx, [ebp + 0x58]
call fcn.00437d7d
lea ecx, [ebp + 0x38]
call fcn.00437e1a
jmp 0x458ef6
lea ecx, [ebp + 0x38]
call fcn.00437e1a
mov ebx, edi
shr ebx, 1
cmp dword [ebp + 0x64], 0
jne 0x458d81
lea ebx, [edi + 0xa]
lea eax, [ebx + 0xa]
push eax
lea ecx, [ebp + 0x6c]
call fcn.0043ddc3
push ebx
push dword [ebp + 0x6c]
push edi
push esi
push 0
push dword [ebp + 0x60]
call dword [0x4c0b9c]
mov ebx, eax
test ebx, ebx
jge 0x458d70
xor ebx, ebx
mov eax, dword [ebp + 0x6c]
lea edi, [ebx + ebx]
and word [edi + eax], 0
mov dword [ebp + 0x48], eax
mov dword [ebp], eax
cmp dword [ebp + 0x40], 0x4b1
jne 0x458d95
push edi
push dword [ebp + 0x48]
call fcn.0043c1c0
pop ecx
pop ecx
xor eax, eax
cmp dword [ebp + 0x40], eax
jle 0x458e46
cmp byte [ebp + 0x56], al
je 0x458de3
xor esi, esi
push esi
lea eax, [ebp + 0x3c]
push eax
push edi
push dword [ebp + 0x48]
push dword [ebp + 0x3c]
push dword [ebp + 0x44]
call fcn.0044983b
add esp, 0x18
lea ecx, [ebp + 0x50]
call fcn.00437e1a
lea ecx, [ebp + 0x6c]
call fcn.00437e1a
lea ecx, [ebp + 0x5c]
call fcn.00437e1a
lea ecx, [ebp + 0x58]
call fcn.00402b5a
jmp 0x458c7b
cmp byte [ebp + 0x7b], 0
jne 0x458e0e
cmp edi, eax
jle 0x458ef6
cmp dword [ebp + 0x30], 0
je 0x458e05
push dword [ebp + 0x2c]
lea ecx, [ebp + 0x58]
push dword [ebp + 0x30]
call fcn.00437d7d
push edi
push dword [ebp + 0x48]
jmp 0x458eab
cmp dword [ebp + 0x20], eax
jne 0x458e4b
lea ecx, [ebp + 0x78]
call fcn.0043dd7e
push ebx
push dword [ebp + 0x48]
lea eax, [ebp + 0x78]
push eax
call fcn.00441eff
mov ecx, dword [ebp + 0x44]
add esp, 0xc
push dword [ebp + 0x78]
push dword [ebp + 0x3c]
call fcn.0043d658
lea ecx, [ebp + 0x78]
call fcn.00437e1a
jmp 0x458ef6
cmp dword [ebp + 0x20], eax
je 0x458e53
push dword [ebp]
jmp 0x458eeb
shr edi, 1
lea esi, [edi + edi*2]
lea esi, [esi + esi + 0xa]
lea eax, [esi + 1]
push eax
lea ecx, [ebp + 0x50]
call fcn.0043dc99
mov ebx, dword [ebp + 0x50]
xor eax, eax
push eax
push eax
push esi
push ebx
push edi
push dword [ebp + 0x48]
push eax
push dword [ebp + 0x24]
call dword [sym.imp.KERNEL32.DLL_WideCharToMultiByte]
mov esi, eax
test esi, esi
jge 0x458e87
xor esi, esi
cmp byte [ebp + 0x7b], 0
mov byte [ebx + esi], 0
jne 0x458eb5
test esi, esi
jle 0x458ef6
cmp dword [ebp + 0x30], 0
je 0x458ea9
push dword [ebp + 0x2c]
lea ecx, [ebp + 0x58]
push dword [ebp + 0x30]
call fcn.00437d7d
push esi
push ebx
lea ecx, [ebp + 0x58]
call fcn.00437d7d
jmp 0x458ef6
cmp byte [ebp + 0x56], 0
je 0x458eda
push ebx
call dword [sym.imp.KERNEL32.DLL_lstrlenA]
push 0
lea ecx, [ebp + 0x3c]
push ecx
push eax
push ebx
push dword [ebp + 0x3c]
push dword [ebp + 0x44]
call fcn.0044983b
add esp, 0x18
jmp 0x458ef6
push esi
lea eax, [ebp + 0x6c]
push ebx
push eax
call fcn.00441e9e
add esp, 0xc
push dword [ebp + 0x6c]
push dword [ebp + 0x3c]
mov ecx, dword [ebp + 0x44]
call fcn.0043d658
xor esi, esi
cmp dword [ebp + 0x58], esi
je 0x458dbe
push dword [ebp + 0x58]
call dword [sym.imp.KERNEL32.DLL_FlushFileBuffers]
jmp 0x458dbe