Function at 0x474030
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x50
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x64]
push ebx
push ebp
push esi
lea esi, [eax + 1]
mov eax, ecx
push edi
cdq
sub eax, edx
mov edi, dword [esp + 0x64]
sar eax, 1
cdq
idiv esi
mov dword [esp + 0x90], ecx
mov ebx, eax
xor eax, eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov eax, ecx
cdq
idiv esi
mov edx, dword [esp + 0x78]
push edx
lea edx, [esp + 0x94]
push edx
lea edx, [esp + 0x20]
push edx
mov edx, dword [edi + 8]
push ecx
lea ecx, [esp + 0x24]
mov dword [esp + 0x28], eax
push eax
lea eax, [esp + 0x24]
push eax
mov eax, dword [edi + 4]
push ecx
push edx
lea ecx, [esp + 0x8c]
push eax
lea edx, [esp + 0x8c]
push ecx
push edx
call fcn.004117a0
add esp, 0x2c
test eax, eax
je 0x4745cd
mov esi, dword [edi + 4]
mov ebp, dword [esp + 0x68]
mov eax, esi
mov ecx, dword [edi]
imul eax, dword [esp + 0x6c]
add eax, ebp
mov ebp, dword [esp + 0x14]
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x10]
imul eax, ebx
mov dword [esp + 0x74], eax
mov eax, ebp
cdq
sub eax, edx
mov edx, dword [esp + 0x70]
mov edi, eax
mov eax, dword [esp + 0x74]
add edx, eax
mov eax, dword [esp + 0x18]
sar edi, 1
add edi, edx
sub esi, eax
cdq
sub eax, edx
mov dword [esp + 0x1c], esi
sar eax, 1
sub ebx, eax
and ebp, reloc.DSOUND.dll_DirectSoundCreate
mov dword [esp + 0x74], eax
mov dword [esp + 0x64], ebx
jns 0x474114
dec ebp
or ebp, 0xfffffffe
inc ebp
je 0x474121
mov edx, 2
sub edx, ebp
inc edi
lea ecx, [ecx + edx*4]
mov ebx, dword [esp + 0x88]
cmp ebx, 0x100
jne 0x47432f
mov edx, dword [esp + 0x8c]
test edx, edx
je 0x474205
mov edx, dword [esp + 0x90]
test edx, edx
jle 0x4745cd
lea ebx, [esi*4]
mov ebp, edx
test eax, eax
jle 0x4741ee
mov esi, eax
mov dl, byte [edi]
test dl, 0xf
je 0x4741a3
and edx, 0xf
mov eax, edx
shl eax, 8
add eax, edx
mov edx, 0x53d22f
shl eax, 4
sub edx, eax
xor eax, eax
mov al, byte [ecx]
mov al, byte [eax + edx]
mov byte [ecx], al
xor eax, eax
mov al, byte [ecx + 1]
mov al, byte [eax + edx]
mov byte [ecx + 1], al
xor eax, eax
mov al, byte [ecx + 2]
mov dl, byte [eax + edx]
mov eax, dword [esp + 0x74]
mov byte [ecx + 2], dl
mov dl, byte [edi]
test dl, 0xf0
je 0x4741e3
and edx, 0xff
mov eax, edx
shl eax, 8
add eax, edx
mov edx, 0x53d22f
sub edx, eax
xor eax, eax
mov al, byte [ecx + 4]
mov al, byte [eax + edx]
mov byte [ecx + 4], al
xor eax, eax
mov al, byte [ecx + 5]
mov al, byte [eax + edx]
mov byte [ecx + 5], al
xor eax, eax
mov al, byte [ecx + 6]
mov dl, byte [eax + edx]
mov eax, dword [esp + 0x74]
mov byte [ecx + 6], dl
add ecx, 8
inc edi
dec esi
jne 0x474165
mov esi, dword [esp + 0x64]
add ecx, ebx
add edi, esi
dec ebp
jne 0x47415b
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret
xor edx, edx
xor ebx, ebx
xor esi, esi
xor ebp, ebp
mov eax, ebp
sar eax, 4
mov byte [esp + edx*4 + 0x22], al
mov eax, esi
sar eax, 4
mov byte [esp + edx*4 + 0x21], al
mov eax, ebx
sar eax, 4
mov byte [esp + edx*4 + 0x20], al
mov eax, dword [esp + 0x7c]
add ebp, eax
mov eax, dword [esp + 0x80]
add esi, eax
mov eax, dword [esp + 0x84]
inc edx
add ebx, eax
cmp edx, 0x10
jl 0x47420d
mov eax, dword [esp + 0x90]
test eax, eax
jle 0x4745cd
mov edx, dword [esp + 0x1c]
shl edx, 2
mov dword [esp + 0x8c], edx
mov ebp, dword [esp + 0x74]
test ebp, ebp
jle 0x474311
mov dl, byte [edi]
test dl, 0xf
je 0x4742b7
and edx, 0xf
mov esi, edx
shl esi, 8
add esi, edx
shl esi, 4
mov ebx, esi
mov esi, 0x53d22f
sub esi, ebx
xor ebx, ebx
mov bl, byte [ecx]
mov bl, byte [ebx + esi]
add bl, byte [esp + edx*4 + 0x20]
mov byte [ecx], bl
xor ebx, ebx
mov bl, byte [ecx + 1]
mov bl, byte [ebx + esi]
add bl, byte [esp + edx*4 + 0x21]
mov byte [ecx + 1], bl
xor ebx, ebx
mov bl, byte [ecx + 2]
mov bl, byte [ebx + esi]
add bl, byte [esp + edx*4 + 0x22]
mov byte [ecx + 2], bl
mov dl, byte [edi]
test dl, 0xf0
je 0x474306
mov esi, edx
and esi, 0xff
mov ebx, esi
mov edx, esi
shl ebx, 8
add ebx, esi
mov esi, 0x53d22f
sub esi, ebx
xor ebx, ebx
mov bl, byte [ecx + 4]
shr edx, 4
mov bl, byte [ebx + esi]
add bl, byte [esp + edx*4 + 0x20]
mov byte [ecx + 4], bl
xor ebx, ebx
mov bl, byte [ecx + 5]
mov bl, byte [ebx + esi]
add bl, byte [esp + edx*4 + 0x21]
mov byte [ecx + 5], bl
xor ebx, ebx
mov bl, byte [ecx + 6]
mov bl, byte [ebx + esi]
add bl, byte [esp + edx*4 + 0x22]
mov byte [ecx + 6], bl
add ecx, 8
inc edi
dec ebp
jne 0x47426f
mov ebx, dword [esp + 0x8c]
mov esi, dword [esp + 0x64]
add ecx, ebx
add edi, esi
dec eax
jne 0x474263
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret
test ebx, ebx
je 0x4745cd
mov edx, ebx
shl edx, 8
lea ebp, [edx + ebx + 0x52d230]
mov edx, dword [esp + 0x8c]
test edx, edx
je 0x474433
mov edx, dword [esp + 0x90]
test edx, edx
jle 0x4745cd
shl esi, 2
mov dword [esp + 0x8c], esi
mov dword [esp + 0x84], edx
test eax, eax
jle 0x474407
mov esi, eax
mov dl, byte [edi]
test dl, 0xf
je 0x4743bb
and edx, 0xf
xor ebx, ebx
shl edx, 4
mov bl, byte [edx + ebp]
mov edx, ebx
shl ebx, 8
add ebx, edx
mov edx, 0x53d22f
sub edx, ebx
xor ebx, ebx
mov bl, byte [ecx]
mov bl, byte [ebx + edx]
mov byte [ecx], bl
xor ebx, ebx
mov bl, byte [ecx + 1]
mov bl, byte [ebx + edx]
mov byte [ecx + 1], bl
xor ebx, ebx
mov bl, byte [ecx + 2]
mov dl, byte [ebx + edx]
mov byte [ecx + 2], dl
mov dl, byte [edi]
test dl, 0xf0
je 0x4743fc
and edx, 0xff
xor ebx, ebx
mov bl, byte [edx + ebp]
mov edx, ebx
shl ebx, 8
add ebx, edx
mov edx, 0x53d22f
sub edx, ebx
xor ebx, ebx
mov bl, byte [ecx + 4]
mov bl, byte [ebx + edx]
mov byte [ecx + 4], bl
xor ebx, ebx
mov bl, byte [ecx + 5]
mov bl, byte [ebx + edx]
mov byte [ecx + 5], bl
xor ebx, ebx
mov bl, byte [ecx + 6]
mov dl, byte [ebx + edx]
mov byte [ecx + 6], dl
add ecx, 8
inc edi
dec esi
jne 0x47437c
mov ebx, dword [esp + 0x8c]
mov esi, dword [esp + 0x64]
mov edx, dword [esp + 0x84]
add ecx, ebx
add edi, esi
dec edx
mov dword [esp + 0x84], edx
jne 0x474372
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret
xor eax, eax
mov esi, dword [esp + 0x84]
mov dword [esp + 0x70], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x80]
imul eax, ebx
imul esi, ebx
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x7c]
xor edx, edx
imul eax, ebx
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x8c]
sar eax, 0xc
mov byte [esp + edx*4 + 0x22], al
mov eax, dword [esp + 0x70]
sar ebx, 0xc
sar eax, 0xc
mov byte [esp + edx*4 + 0x21], bl
mov ebx, dword [esp + 0x8c]
mov byte [esp + edx*4 + 0x20], al
mov eax, dword [esp + 0x84]
add ebx, eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x8c], ebx
mov ebx, dword [esp + 0x78]
add ebx, eax
mov eax, dword [esp + 0x70]
inc edx
add eax, esi
cmp edx, 0x10
mov dword [esp + 0x78], ebx
mov dword [esp + 0x70], eax
jl 0x474473
mov eax, dword [esp + 0x90]
test eax, eax
jle 0x4745cd
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x84], eax
shl edx, 2
mov dword [esp + 0x8c], edx
mov eax, dword [esp + 0x74]
test eax, eax
jle 0x4745a9
mov dl, byte [edi]
test dl, 0xf
je 0x47454a
and edx, 0xf
xor ebx, ebx
mov esi, edx
shl edx, 4
mov bl, byte [edx + ebp]
mov edx, ebx
shl ebx, 8
add ebx, edx
mov edx, 0x53d22f
sub edx, ebx
xor ebx, ebx
mov bl, byte [ecx]
mov bl, byte [ebx + edx]
add bl, byte [esp + esi*4 + 0x20]
mov byte [ecx], bl
xor ebx, ebx
mov bl, byte [ecx + 1]
mov bl, byte [ebx + edx]
add bl, byte [esp + esi*4 + 0x21]
mov byte [ecx + 1], bl
xor ebx, ebx
mov bl, byte [ecx + 2]
mov dl, byte [ebx + edx]
mov bl, byte [esp + esi*4 + 0x22]
add dl, bl
mov byte [ecx + 2], dl
mov dl, byte [edi]
test dl, 0xf0
je 0x47459e
mov esi, edx
xor ebx, ebx
and esi, 0xff
mov edx, esi
mov bl, byte [esi + ebp]
mov esi, ebx
shl ebx, 8
add ebx, esi
mov esi, 0x53d22f
sub esi, ebx
xor ebx, ebx
mov bl, byte [ecx + 4]
shr edx, 4
mov bl, byte [ebx + esi]
add bl, byte [esp + edx*4 + 0x20]
mov byte [ecx + 4], bl
xor ebx, ebx
mov bl, byte [ecx + 5]
mov bl, byte [ebx + esi]
add bl, byte [esp + edx*4 + 0x21]
mov byte [ecx + 5], bl
xor ebx, ebx
mov bl, byte [ecx + 6]
mov bl, byte [ebx + esi]
add bl, byte [esp + edx*4 + 0x22]
mov byte [ecx + 6], bl
add ecx, 8
inc edi
dec eax
jne 0x4744fb
mov esi, dword [esp + 0x8c]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x84]
add ecx, esi
add edi, edx
dec eax
mov dword [esp + 0x84], eax
jne 0x4744ef
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret