Function at 0x4731f0
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 0x47325f
push 0x8000
mov dword [ebp + 0x84], 0x8000
call fcn.006883b5
mov esi, eax
add esp, 4
mov dword [ebp + 0x80], esi
test esi, esi
jne 0x47325f
push str.No_memory_for_CAB_reader
push 0xc
push ebx
call fcn.00469db0
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 0x473288
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 0x4732bd
movzx eax, word [eax + 8]
push eax
lea eax, [ebp + 0x118]
push eax
call fcn.00474930
add esp, 8
test eax, eax
je 0x4732b6
push str.Cant_initialize_LZX_decompression.
push 0xffffffffffffffff
push dword [esp + 0x3c]
jmp 0x473243
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 0x47356a
jb 0x473309
cmp ecx, eax
jae 0x47356a
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.00468650
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov edx, eax
mov dword [esp + 0x14], edx
test ecx, ecx
jle 0x47352b
lea esi, [ebp + 0x118]
movzx eax, word [edi + 6]
cmp ecx, eax
jle 0x473366
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 0x473473
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 0x473420
mov eax, 0x40
sub eax, dword [ebx + 0x58]
cmp eax, 0x10
jl 0x473420
test edi, edi
jl 0x473420
jg 0x4733d9
test ecx, ecx
je 0x473420
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 0x473431
call fcn.00475210
add esp, 8
jmp 0x473452
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 0x24]
call fcn.00474190
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 0x473420
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 0x473483
sub ecx, 1
jne 0x473537
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.00472760
add esp, 0xc
test edx, edx
jl 0x47324b
jg 0x4734bc
test eax, eax
jb 0x47324b
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 0x47355f
jl 0x4734e2
cmp ecx, eax
jae 0x47355f
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.00468650
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov dword [esp + 0x14], eax
mov edx, eax
test ecx, ecx
jg 0x473358
push str.Truncated_CAB_file_data
push 0x2a
jmp 0x473242
push eax
push str.LZX_decompression_failed___d_
push 0xffffffffffffffff
push dword [esp + 0x40]
call fcn.00469db0
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 0x4735c6
mov ebx, dword [esp + 0x34]
lea ecx, [esp + 0x28]
push ecx
push eax
push ebx
call fcn.00468650
add esp, 0xc
mov ecx, eax
cmp dword [esp + 0x28], 0
jg 0x47359b
push str.Truncated_CAB_header
push 0x2a
jmp 0x473242
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.00472760
add esp, 0xc
test edx, edx
jg 0x4735c6
jl 0x47324b
test eax, eax
jb 0x47324b
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 0x473697
movzx ecx, word [edi + 8]
cmp ecx, 0xa
jbe 0x473697
lea esi, [eax - 0xa]
mov edx, eax
add esi, ecx
cmp eax, esi
jae 0x473697
mov edi, dword [esp + 0x34]
mov ebp, eax
mov eax, esi
sub eax, edx
push eax
push 0xe8
push edx
call fcn.0067e100
mov edx, eax
add esp, 0xc
test edx, edx
je 0x47368f
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 0x473688
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x1c]
cmp ecx, eax
jge 0x473688
test ecx, ecx
js 0x47366d
sub ecx, ebx
jmp 0x47366f
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 0x473614
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