Function at 0x46de40
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x20
push ebx
mov ebx, dword [esp + 0x28]
push ebp
push esi
push edi
mov eax, dword [ebx + 0x440]
mov ebp, dword [eax]
mov dword [esp + 0x2c], ebp
mov esi, dword [ebp + 0x80]
mov edi, dword [ebp + 0x30]
mov dword [esp + 0x1c], edi
test esi, esi
jne 0x46deaf
push 0x8000
mov dword [ebp + 0x84], 0x8000
call fcn.006e38fe
mov esi, eax
add esp, 4
mov dword [ebp + 0x80], esi
test esi, esi
jne 0x46deaf
push str.No_memory_for_CAB_reader
push 0xc
push ebx
call fcn.004649c0
add esp, 0xc
mov eax, dword [esp + 0x38]
pop edi
pop esi
pop ebp
mov dword [eax], 0xffffffe2
xor eax, eax
pop ebx
add esp, 0x20
ret
movzx eax, word [edi + 0xc]
mov ecx, eax
mov ebx, eax
mov dword [esp + 0x18], ecx
cmp ax, word [edi + 8]
jne 0x46ded8
movzx edx, word [edi + 0xe]
mov eax, dword [esp + 0x38]
sub ecx, edx
pop edi
mov dword [eax], ecx
lea eax, [edx + esi]
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov eax, dword [ebp + 0x28]
cmp byte [eax + 0x44], 0
jne 0x46df0d
movzx eax, word [eax + 8]
push eax
lea eax, [ebp + 0x118]
push eax
call fcn.0046f580
add esp, 8
test eax, eax
je 0x46df06
push str.Cant_initialize_LZX_decompression.
push 0xffffffffffffffff
push dword [esp + 0x3c]
jmp 0x46de93
mov eax, dword [ebp + 0x28]
mov byte [eax + 0x44], 1
mov eax, dword [ebp + 0x148]
mov dword [eax + 0x58], 0
mov eax, dword [ebp + 0x148]
mov byte [eax + 0x5d], 0
mov eax, ebx
cdq
mov ecx, eax
mov esi, edx
mov eax, dword [esp + 0x18]
movzx ebx, ax
mov dword [ebp + 0x140], ecx
mov dword [ebp + 0x144], esi
movzx eax, word [edi + 8]
cdq
mov dword [esp + 0x18], ebx
cmp esi, edx
ja 0x46e1ba
jb 0x46df59
cmp ecx, eax
jae 0x46e1ba
mov eax, dword [ebp + 0x80]
mov ebx, dword [esp + 0x34]
add eax, ecx
mov dword [ebp + 0x130], eax
movzx eax, word [edi + 8]
cdq
sub eax, ecx
mov dword [ebp + 0x138], eax
lea eax, [esp + 0x10]
push eax
sbb edx, esi
push 1
push ebx
mov dword [ebp + 0x13c], edx
call fcn.00463260
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov edx, eax
mov dword [esp + 0x14], edx
test ecx, ecx
jle 0x46e17b
lea esi, [ebp + 0x118]
movzx eax, word [edi + 6]
cmp ecx, eax
jle 0x46dfb6
mov ecx, eax
mov dword [esp + 0x10], ecx
mov dword [esi], edx
mov eax, ecx
cdq
mov dword [ebp + 0x124], edx
xor edx, edx
mov dword [ebp + 0x128], 0
mov dword [ebp + 0x12c], 0
mov ebx, dword [esi + 0x30]
mov dword [ebp + 0x120], eax
movzx eax, word [edi + 6]
cmp eax, ecx
mov dword [esp + 0x20], ebx
mov eax, dword [ebx + 0x1d4]
sete dl
mov dword [esp + 0x18], edx
test eax, eax
jne 0x46e0c3
mov ecx, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edi
cmp byte [ebx + 0x5d], al
je 0x46e070
mov eax, 0x40
sub eax, dword [ebx + 0x58]
cmp eax, 0x10
jl 0x46e070
test edi, edi
jl 0x46e070
jg 0x46e029
test ecx, ecx
je 0x46e070
mov ecx, dword [ebx + 0x50]
mov edi, dword [ebx + 0x54]
mov eax, dword [esp + 0x14]
shld edi, ecx, 8
shl ecx, 8
movzx eax, byte [eax]
cdq
or ecx, eax
or edi, edx
movzx eax, byte [ebx + 0x5c]
shld edi, ecx, 8
cdq
shl ecx, 8
or edi, edx
mov edx, dword [esp + 0x18]
or ecx, eax
mov dword [ebx + 0x50], ecx
mov dword [ebx + 0x54], edi
inc dword [esi]
add dword [esi + 8], 0xffffffff
adc dword [esi + 0xc], 0xffffffff
add dword [ebx + 0x58], 0x10
mov byte [ebx + 0x5d], 0
nop
cmp dword [ebx], 0x12
push edx
push esi
jge 0x46e081
call fcn.0046fe60
add esp, 8
jmp 0x46e0a2
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 0x24]
call fcn.0046ede0
add esp, 8
sub edi, dword [esi + 0x20]
sbb ebx, dword [esi + 0x24]
add dword [esi + 0x18], edi
add dword [esi + 0x28], edi
adc dword [esi + 0x2c], ebx
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
cmp eax, 0x64
je 0x46e070
mov ecx, dword [esp + 0x24]
sub ecx, dword [esi + 8]
mov edx, dword [esp + 0x28]
sbb edx, dword [esi + 0xc]
add dword [esi + 0x10], ecx
mov edi, dword [esp + 0x1c]
adc dword [esi + 0x14], edx
mov ecx, eax
sub ecx, 0
je 0x46e0d3
sub ecx, 1
jne 0x46e187
mov eax, dword [ebp + 0x12c]
mov ecx, dword [ebp + 0x128]
mov edx, dword [esp + 0x14]
push eax
push ecx
push dword [esp + 0x3c]
mov dword [edi + 0x10], ecx
mov dword [edi + 0x14], eax
mov dword [edi + 0x2c], edx
call fcn.0046d3b0
add esp, 0xc
test edx, edx
jl 0x46de9b
jg 0x46e10c
test eax, eax
jb 0x46de9b
mov ecx, dword [ebp + 0x140]
mov ebx, dword [ebp + 0x144]
movzx eax, cx
mov dword [esp + 0x28], eax
movzx eax, word [edi + 8]
cdq
cmp ebx, edx
jg 0x46e1af
jl 0x46e132
cmp ecx, eax
jae 0x46e1af
mov eax, dword [ebp + 0x80]
add eax, ecx
mov dword [ebp + 0x130], eax
movzx eax, word [edi + 8]
cdq
sub eax, ecx
mov dword [ebp + 0x138], eax
lea eax, [esp + 0x10]
push eax
sbb edx, ebx
mov ebx, dword [esp + 0x38]
push 1
push ebx
mov dword [ebp + 0x13c], edx
call fcn.00463260
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov dword [esp + 0x14], eax
mov edx, eax
test ecx, ecx
jg 0x46dfa8
push str.Truncated_CAB_file_data
push 0x2a
jmp 0x46de92
push eax
push str.LZX_decompression_failed___d_
push 0xffffffffffffffff
push dword [esp + 0x40]
call fcn.004649c0
mov eax, dword [esp + 0x48]
add esp, 0x10
pop edi
pop esi
pop ebp
mov dword [eax], 0xffffffe2
xor eax, eax
pop ebx
add esp, 0x20
ret
mov eax, dword [esp + 0x28]
movzx eax, ax
mov dword [esp + 0x18], eax
movzx eax, word [edi + 6]
test ax, ax
je 0x46e216
mov ebx, dword [esp + 0x34]
lea ecx, [esp + 0x28]
push ecx
push eax
push ebx
call fcn.00463260
add esp, 0xc
mov ecx, eax
cmp dword [esp + 0x28], 0
jg 0x46e1eb
push str.Truncated_CAB_header
push 0x2a
jmp 0x46de92
movzx eax, word [edi + 6]
cdq
push edx
push eax
push ebx
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], edx
mov dword [edi + 0x2c], ecx
call fcn.0046d3b0
add esp, 0xc
test edx, edx
jg 0x46e216
jl 0x46de9b
test eax, eax
jb 0x46de9b
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x148]
mov dword [esp + 0x24], ecx
mov eax, dword [eax + 0x40]
shl eax, 0xf
sub eax, 0x8000
cmp byte [ecx + 0x20], 0
mov dword [esp + 0x34], eax
mov eax, dword [ebp + 0x80]
je 0x46e2e7
movzx ecx, word [edi + 8]
cmp ecx, 0xa
jbe 0x46e2e7
lea esi, [eax - 0xa]
mov edx, eax
add esi, ecx
cmp eax, esi
jae 0x46e2e7
mov edi, dword [esp + 0x34]
mov ebp, eax
mov eax, esi
sub eax, edx
push eax
push 0xe8
push edx
call fcn.006d9020
mov edx, eax
add esp, 0xc
test edx, edx
je 0x46e2df
movzx ecx, byte [edx + 4]
mov ebx, edx
movzx eax, byte [edx + 3]
sub ebx, ebp
shl ecx, 8
add ebx, edi
or ecx, eax
movzx eax, byte [edx + 2]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 1]
shl ecx, 8
or ecx, eax
mov eax, ebx
neg eax
cmp ecx, eax
jl 0x46e2d8
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x1c]
cmp ecx, eax
jge 0x46e2d8
test ecx, ecx
js 0x46e2bd
sub ecx, ebx
jmp 0x46e2bf
add ecx, eax
mov eax, ecx
mov byte [edx + 1], cl
shr eax, 8
mov byte [edx + 2], al
mov eax, ecx
shr eax, 0x10
shr ecx, 0x18
mov byte [edx + 3], al
mov byte [edx + 4], cl
add edx, 5
cmp edx, esi
jb 0x46e264
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x1c]
movzx ecx, word [edi + 0xe]
mov eax, dword [ebp + 0x80]
mov esi, dword [esp + 0x18]
add eax, ecx
movzx edx, si
sub edx, ecx
mov ecx, dword [esp + 0x38]
mov dword [ecx], edx
mov word [edi + 0xc], si
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret