Function at 0x477600
Capabilities:
Enumerate pe sections

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov ebx, edx
mov ebp, ecx
push edx
call fcn.0047a7c0
add esp, 4
mov esi, eax
push 0x10
push eax
call fcn.00473280
add esp, 8
test al, al
je 0x477a00
mov edi, dword [esp + 0x34]
mov eax, dword [esi + 8]
test eax, eax
je 0x477653
movzx ecx, byte [eax + 0x18]
movzx eax, byte [eax + 0x19]
and al, 0xf
mov byte [esp + 3], al
shr cl, 4
add ebx, 0x14
mov dword [esp + 0xc], ebx
and cl, 3
jne 0x477663
jmp 0x47765f
add ebx, 0x14
mov dword [esp + 0xc], ebx
mov byte [esp + 3], 0xf
xor ecx, ecx
mov ebx, ebp
mov dword [esp + 8], ebx
mov dword [esp + 4], ecx
mov dword [esp + 0x10], ebp
push 0x32
push 0
push esi
call fcn.00478c90
add esp, 0xc
mov ebx, eax
push 0x10
push 0
push esi
call fcn.00478c90
add esp, 0xc
mov ebp, eax
add ebp, ebx
push 0x11
push 0
push esi
call fcn.00478c90
add esp, 0xc
mov dword [esp + 0x18], ebx
add eax, ebx
movzx edi, word [edi + 2]
movzx ebx, word [esi + 0x16]
mov dword [esp + 0x14], ebp
add bx, bp
mov ecx, esi
mov edx, dword [esp + 8]
movzx esi, word [edx + 2]
add si, di
mov dword [esp + 0x1c], eax
add edi, eax
sub di, word [ecx + 0x1a]
add di, word [edx + 6]
mov ebp, ecx
push ecx
call fcn.00474df0
add esp, 4
sub bx, si
js 0x4776ea
test di, di
js 0x4776ea
xor ebx, ebx
mov esi, ebp
jmp 0x47777e
test bx, bx
jle 0x47775b
mov edi, eax
mov esi, ebp
mov edx, dword [ebp + 8]
xor eax, eax
xor ecx, ecx
test edx, edx
je 0x477702
sub cx, word [edx + 0x12]
mov ebp, dword [esp + 0x10]
cmp cx, bx
cmovl ebx, eax
mov ecx, dword [esp + 4]
mov eax, edi
cmp cl, 3
jne 0x47778b
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
add ecx, ebx
sub eax, ecx
movzx ecx, ax
shr ecx, 0xf
add ecx, eax
movsx ecx, cx
sar ecx, 1
mov eax, dword [esp + 8]
movzx edx, word [eax + 6]
movzx eax, word [eax + 2]
sub edx, eax
lea edi, [edx + 1]
movzx edi, di
shr edi, 0xf
add edx, edi
inc edx
movsx edx, dx
sar edx, 1
add ebx, ecx
add bx, word [esi + 0x16]
sub ebx, eax
sub ebx, edx
jmp 0x4777c1
xor ebx, ebx
test di, di
mov esi, ebp
jle 0x47777e
neg edi
push esi
mov ebp, eax
call fcn.00476c60
add esp, 4
cwde
movsx ecx, di
add ecx, eax
mov eax, ebp
cmovs edi, ebx
mov ebx, edi
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 4]
cmp cl, 3
je 0x477717
movzx eax, cl
cmp eax, 2
je 0x4777af
cmp eax, 1
mov edi, dword [esp + 0x34]
jne 0x4777c5
movzx ebx, word [esi + 0x16]
add bx, word [esp + 0x14]
mov eax, dword [esp + 8]
sub bx, word [eax + 2]
jmp 0x4777c5
movzx ebx, word [esi + 0x1a]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x1c]
add cx, word [eax + 6]
sub ebx, ecx
mov edi, dword [esp + 0x34]
mov dword [esp + 4], ebx
mov eax, dword [esi + 8]
test eax, eax
je 0x4777db
movzx eax, byte [eax + 0x18]
shr al, 2
and al, 3
jne 0x4777e1
xor eax, eax
mov dword [esp + 0xc], ebp
mov dword [esp + 0x10], eax
push 0x12
push 0
push esi
call fcn.00478c90
add esp, 0xc
mov ebp, esi
mov esi, eax
mov ebx, dword [esp + 0x18]
add esi, ebx
push 0x13
push 0
push ebp
call fcn.00478c90
add esp, 0xc
add eax, ebx
movzx ebx, word [edi]
movzx edi, word [ebp + 0x14]
mov ecx, dword [esp + 0xc]
movzx edx, word [ecx]
add dx, bx
mov dword [esp + 0x14], eax
add ebx, eax
mov dword [esp + 8], ebp
sub bx, word [ebp + 0x18]
mov dword [esp + 0x18], esi
add di, si
add bx, word [ecx + 4]
sub di, dx
js 0x47784b
test bx, bx
js 0x47784b
xor edi, edi
mov ebx, dword [esp + 4]
mov esi, dword [esp + 8]
jmp 0x47788c
test di, di
jle 0x477867
mov esi, dword [esp + 8]
push esi
call fcn.00476d60
add esp, 4
xor ecx, ecx
cmp ax, di
cmovl edi, ecx
jmp 0x477888
xor edi, edi
test bx, bx
mov esi, dword [esp + 8]
jle 0x477888
neg ebx
push esi
call fcn.00476e90
add esp, 4
cwde
movsx ecx, bx
add ecx, eax
cmovs ebx, edi
mov edi, ebx
mov ebx, dword [esp + 4]
push esi
call fcn.00474d90
add esp, 4
mov ecx, dword [esp + 0x10]
cmp cl, 3
je 0x4778bc
movzx eax, cl
cmp eax, 2
je 0x477901
cmp eax, 1
jne 0x477912
mov edi, dword [esp + 0x18]
add di, word [esi + 0x14]
mov eax, dword [esp + 0xc]
sub di, word [eax]
jmp 0x477912
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
add ecx, esi
sub eax, ecx
movzx ecx, ax
shr ecx, 0xf
add ecx, eax
movsx edi, cx
sar edi, 1
mov eax, dword [esp + 0xc]
movzx ecx, word [eax + 4]
movzx eax, word [eax]
sub ecx, eax
lea edx, [ecx + 1]
movzx edx, dx
shr edx, 0xf
add ecx, edx
inc ecx
movsx ecx, cx
sar ecx, 1
add edi, esi
mov esi, dword [esp + 8]
add di, word [esi + 0x14]
sub edi, eax
jmp 0x477910
mov edi, dword [esi + 0x18]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
add cx, word [eax + 4]
sub edi, ecx
push 0x477090
push esi
call fcn.004acea0
add esp, 8
mov byte [esp + 0xc], al
push 0x477030
push esi
call fcn.004acea0
add esp, 8
cmp byte [esp + 0xc], 0
jne 0x47793d
test al, al
je 0x477952
push 0
push 0xa
push esi
call fcn.0046e9e0
add esp, 0xc
cmp al, 1
jne 0x477a00
mov eax, dword [esp + 0x38]
movzx edx, byte [esp + 3]
movd xmm2, edi
pinsrw xmm2, ebx, 1
pxor xmm0, xmm0
pxor xmm4, xmm4
pcmpgtw xmm4, xmm2
xor ecx, ecx
test eax, eax
sete cl
movd xmm1, edx
pshufd xmm3, xmm1, 0x50
movdqa xmm1, xmmword [0x5ea620]
pand xmm1, xmm3
pcmpeqd xmm1, xmm0
packssdw xmm1, xmm1
pand xmm1, xmm4
pandn xmm1, xmm2
pand xmm3, xmmword [0x5ea630]
pcmpeqd xmm3, xmm0
packssdw xmm3, xmm3
movdqa xmm2, xmm1
pcmpgtw xmm2, xmm0
pand xmm2, xmm3
pandn xmm2, xmm1
movd xmm0, ecx
pshuflw xmm0, xmm0, 0
psllw xmm0, 0xf
psraw xmm0, 0xf
pandn xmm0, xmm2
mov ecx, dword [esp + 0x34]
movd xmm1, dword [ecx]
paddw xmm1, xmm0
movd dword [ecx], xmm1
movd ecx, xmm2
pextrw edx, xmm2, 1
movsx edx, dx
movsx ecx, cx
push eax
push edx
push ecx
push esi
call fcn.00477230
add esp, 0x30
jmp 0x477a03
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret