Function at 0x4d4a90
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x10
cmp dword [esp + 0x20], 0
mov eax, dword [esp + 0x14]
mov ecx, dword [eax]
mov dword [esp], ecx
je 0x4d5a47
mov al, byte [eax + 8]
test al, 4
push ebp
je 0x4d4ac5
cmp al, 3
je 0x4d5a46
mov ebp, dword [esp + 0x20]
test ebp, ebp
je 0x4d5a46
jmp 0x4d4ac9
mov ebp, dword [esp + 0x20]
movzx eax, al
cmp eax, 6
ja case.default.0x4d4ad8
push ebx
push esi
push edi
jmp dword [eax*4 + 0x4d5a4c]
mov edx, dword [esp + 0x24]
movzx eax, byte [edx + 9]
add eax, 0xffffffff
cmp eax, 0xf
ja case.0x4d4afa.2
movzx eax, byte [eax + 0x4d5a80]
jmp dword [eax*4 + 0x4d5a68]
cmp dword [esp + 0x10], 0
mov esi, dword [esp + 0x28]
mov edx, 7
jbe case.0x4d4afa.2
mov ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
lea ecx, [ecx]
mov bl, byte [esi]
mov al, bl
mov cl, dl
shr al, cl
and al, 1
movzx cx, al
mov eax, dword [esp + 0x2c]
cmp cx, word [eax + 8]
jne 0x4d4b55
mov ecx, 7
sub ecx, edx
mov eax, 0x7f7f
sar eax, cl
mov ecx, edx
and al, bl
mov byte [esi], al
mov bl, byte [edi + 8]
shl bl, cl
or bl, al
mov byte [esi], bl
test edx, edx
jne 0x4d4b63
mov edx, 7
add esi, 1
jmp 0x4d4b66
sub edx, 1
sub ebp, 1
jne 0x4d4b20
jmp case.0x4d4afa.2
mov edi, dword [esp + 0x38]
test edi, edi
mov esi, dword [esp + 0x28]
mov edx, 6
je 0x4d4c26
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
mov bl, byte [esi]
mov ebp, dword [esp + 0x2c]
mov cl, dl
mov al, bl
shr al, cl
and al, 3
movzx cx, al
cmp cx, word [ebp + 8]
jne 0x4d4bcf
mov ecx, 6
sub ecx, edx
mov eax, 0x3f3f
sar eax, cl
mov ecx, dword [esp + 0x30]
and al, bl
mov byte [esi], al
mov bl, byte [ecx + 8]
mov ecx, edx
shl bl, cl
jmp 0x4d4c01
movzx eax, al
lea ecx, [eax*4]
or ecx, eax
add ecx, ecx
add ecx, ecx
or ecx, eax
add ecx, ecx
add ecx, ecx
or ecx, eax
mov al, byte [ecx + edi]
mov ecx, 6
sub ecx, edx
mov ebx, 0x3f3f
sar ebx, cl
shr al, 6
mov ecx, edx
and bl, byte [esi]
shl al, cl
or bl, al
test edx, edx
mov byte [esi], bl
jne 0x4d4c13
mov edx, 6
add esi, 1
jmp 0x4d4c16
sub edx, 2
sub dword [esp + 0x14], 1
jne 0x4d4b98
jmp case.0x4d4afa.2
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
lea esp, [esp]
mov bl, byte [esi]
mov al, bl
mov cl, dl
shr al, cl
and al, 3
movzx cx, al
mov eax, dword [esp + 0x2c]
cmp cx, word [eax + 8]
jne 0x4d4c75
mov ecx, 6
sub ecx, edx
mov eax, 0x3f3f
sar eax, cl
mov ecx, edx
and al, bl
mov byte [esi], al
mov bl, byte [edi + 8]
shl bl, cl
or bl, al
mov byte [esi], bl
test edx, edx
jne 0x4d4c83
mov edx, 6
add esi, 1
jmp 0x4d4c86
sub edx, 2
sub ebp, 1
jne 0x4d4c40
jmp case.0x4d4afa.2
mov edi, dword [esp + 0x38]
test edi, edi
mov esi, dword [esp + 0x28]
mov edx, 4
je 0x4d4d34
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
mov bl, byte [esi]
mov ebp, dword [esp + 0x2c]
mov cl, dl
mov al, bl
shr al, cl
and al, 0xf
movzx cx, al
cmp cx, word [ebp + 8]
jne 0x4d4cef
mov ecx, 4
sub ecx, edx
mov eax, 0xf0f
sar eax, cl
mov ecx, dword [esp + 0x30]
and al, bl
mov byte [esi], al
mov bl, byte [ecx + 8]
mov ecx, edx
shl bl, cl
jmp 0x4d4d13
movzx eax, al
mov ecx, eax
shl ecx, 4
or ecx, eax
mov al, byte [ecx + edi]
mov ecx, 4
sub ecx, edx
mov ebx, 0xf0f
sar ebx, cl
shr al, 4
mov ecx, edx
and bl, byte [esi]
shl al, cl
or bl, al
test edx, edx
mov byte [esi], bl
jne 0x4d4d25
mov edx, 4
add esi, 1
jmp 0x4d4d28
sub edx, 4
sub dword [esp + 0x14], 1
jne 0x4d4cb8
jmp case.0x4d4afa.2
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
mov bl, byte [esi]
mov al, bl
mov cl, dl
shr al, cl
and al, 0xf
movzx cx, al
mov eax, dword [esp + 0x2c]
cmp cx, word [eax + 8]
jne 0x4d4d7c
mov ecx, 4
sub ecx, edx
mov eax, 0xf0f
sar eax, cl
mov ecx, edx
and al, bl
mov byte [esi], al
mov bl, byte [edi + 8]
shl bl, cl
or bl, al
mov byte [esi], bl
test edx, edx
jne 0x4d4d8a
mov edx, 4
add esi, 1
jmp 0x4d4d8d
sub edx, 4
sub ebp, 1
jne 0x4d4d47
jmp case.0x4d4afa.2
mov esi, dword [esp + 0x38]
test esi, esi
mov eax, dword [esp + 0x28]
je 0x4d4ddc
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
mov cl, byte [eax]
movzx bx, cl
cmp bx, word [ebp + 8]
jne 0x4d4dc7
mov cl, byte [edi + 8]
jmp 0x4d4dcd
movzx ecx, cl
mov cl, byte [ecx + esi]
mov byte [eax], cl
add eax, 1
sub edx, 1
jne 0x4d4db6
jmp case.0x4d4afa.2
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x30]
nop
movzx dx, byte [eax]
cmp dx, word [ebp + 8]
jne 0x4d4dff
mov dl, byte [esi + 8]
mov byte [eax], dl
add eax, 1
sub ecx, 1
jne 0x4d4df0
jmp case.0x4d4afa.2
mov esi, dword [esp + 0x44]
test esi, esi
mov eax, dword [esp + 0x28]
je 0x4d4e7f
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov ecx, dword [esp + 0x10]
mov bl, byte [esp + 0x50]
mov dword [esp + 0x14], ecx
nop
mov dl, byte [eax]
mov cl, byte [eax + 1]
movzx di, dl
movzx bp, cl
shl edi, 8
add edi, ebp
mov ebp, dword [esp + 0x2c]
cmp di, word [ebp + 8]
jne 0x4d4e5a
mov edi, dword [esp + 0x30]
mov dl, byte [edi + 9]
mov byte [eax], dl
mov cl, byte [edi + 8]
jmp 0x4d4e6d
movzx edi, cl
mov cl, bl
shr edi, cl
movzx edx, dl
mov ecx, dword [esi + edi*4]
mov cx, word [ecx + edx*2]
mov byte [eax], ch
mov byte [eax + 1], cl
add eax, 2
sub dword [esp + 0x14], 1
jne 0x4d4e30
jmp case.0x4d4afa.2
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x30]
movzx dx, byte [eax]
movzx di, byte [eax + 1]
shl edx, 8
add edx, edi
cmp dx, word [ebp + 8]
jne 0x4d4eb3
movzx edx, byte [esi + 9]
mov byte [eax], dl
movzx edx, byte [esi + 8]
mov byte [eax + 1], dl
add eax, 2
sub ecx, 1
jne 0x4d4e92
jmp case.0x4d4afa.2
mov eax, dword [esp + 0x24]
cmp byte [eax + 9], 8
jne 0x4d4fb1
mov edx, dword [esp + 0x38]
test edx, edx
je 0x4d4f51
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x30]
add eax, 2
mov cl, byte [eax - 2]
movzx bx, cl
cmp bx, word [ebp + 2]
jne 0x4d4f26
movzx bx, byte [eax - 1]
cmp bx, word [ebp + 4]
jne 0x4d4f26
movzx bx, byte [eax]
cmp bx, word [ebp + 6]
jne 0x4d4f26
movzx ecx, byte [esi + 2]
mov byte [eax - 2], cl
movzx ecx, byte [esi + 4]
mov byte [eax - 1], cl
movzx ecx, byte [esi + 6]
jmp 0x4d4f42
movzx ecx, cl
movzx ecx, byte [ecx + edx]
mov byte [eax - 2], cl
movzx ecx, byte [eax - 1]
movzx ecx, byte [ecx + edx]
mov byte [eax - 1], cl
movzx ecx, byte [eax]
movzx ecx, byte [ecx + edx]
mov byte [eax], cl
add eax, 3
sub edi, 1
jne 0x4d4ef0
jmp case.0x4d4afa.2
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
add eax, 2
jmp 0x4d4f70
movzx dx, byte [eax - 2]
cmp dx, word [ebp + 2]
jne 0x4d4fa4
movzx dx, byte [eax - 1]
cmp dx, word [ebp + 4]
jne 0x4d4fa4
movzx dx, byte [eax]
cmp dx, word [ebp + 6]
jne 0x4d4fa4
movzx edx, byte [ecx + 2]
mov byte [eax - 2], dl
movzx edx, byte [ecx + 4]
mov byte [eax - 1], dl
movzx edx, byte [ecx + 6]
mov byte [eax], dl
add eax, 3
sub esi, 1
jne 0x4d4f70
jmp case.0x4d4afa.2
mov esi, dword [esp + 0x44]
test esi, esi
je 0x4d50b8
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
add eax, 2
mov dword [esp + 0x14], ecx
jmp 0x4d4fe0
mov bl, byte [eax - 2]
mov cl, byte [eax - 1]
movzx dx, bl
movzx bp, cl
shl edx, 8
add edx, ebp
mov ebp, dword [esp + 0x2c]
cmp dx, word [ebp + 2]
jne 0x4d5059
movzx dx, byte [eax]
movzx bp, byte [eax + 1]
shl edx, 8
add edx, ebp
mov ebp, dword [esp + 0x2c]
cmp dx, word [ebp + 4]
jne 0x4d5059
movzx dx, byte [eax + 2]
movzx bp, byte [eax + 3]
shl edx, 8
add edx, ebp
mov ebp, dword [esp + 0x2c]
cmp dx, word [ebp + 6]
jne 0x4d5059
movzx ecx, byte [edi + 3]
mov byte [eax - 2], cl
movzx edx, byte [edi + 2]
mov byte [eax - 1], dl
movzx ecx, byte [edi + 5]
mov byte [eax], cl
movzx edx, byte [edi + 4]
mov byte [eax + 1], dl
movzx ecx, byte [edi + 7]
mov byte [eax + 2], cl
movzx edx, byte [edi + 6]
mov byte [eax + 3], dl
jmp 0x4d50a5
movzx edx, byte [esp + 0x50]
movzx ebp, cl
mov cl, dl
shr ebp, cl
movzx ecx, bl
mov ebx, dword [esi + ebp*4]
mov cx, word [ebx + ecx*2]
movzx ebx, byte [eax + 1]
mov byte [eax - 1], cl
mov cl, dl
shr ebx, cl
mov byte [eax - 2], ch
movzx ecx, byte [eax]
mov ebx, dword [esi + ebx*4]
mov cx, word [ebx + ecx*2]
movzx ebx, byte [eax + 3]
mov byte [eax + 1], cl
mov cl, dl
movzx edx, byte [eax + 2]
shr ebx, cl
mov byte [eax], ch
mov ecx, dword [esi + ebx*4]
mov cx, word [ecx + edx*2]
mov byte [eax + 2], ch
mov byte [eax + 3], cl
add eax, 6
sub dword [esp + 0x14], 1
jne 0x4d4fe0
jmp case.0x4d4afa.2
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov eax, dword [esp + 0x28]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
add eax, 2
movzx dx, byte [eax - 2]
movzx di, byte [eax - 1]
shl edx, 8
add edx, edi
cmp dx, word [ebp + 2]
jne 0x4d5139
movzx dx, byte [eax]
movzx di, byte [eax + 1]
shl edx, 8
add edx, edi
cmp dx, word [ebp + 4]
jne 0x4d5139
movzx dx, byte [eax + 2]
movzx di, byte [eax + 3]
shl edx, 8
add edx, edi
cmp dx, word [ebp + 6]
jne 0x4d5139
movzx edx, byte [ecx + 3]
mov byte [eax - 2], dl
movzx edx, byte [ecx + 2]
mov byte [eax - 1], dl
movzx edx, byte [ecx + 5]
mov byte [eax], dl
movzx edx, byte [ecx + 4]
mov byte [eax + 1], dl
movzx edx, byte [ecx + 7]
mov byte [eax + 2], dl
movzx edx, byte [ecx + 6]
mov byte [eax + 3], dl
add eax, 6
sub esi, 1
jne 0x4d50d2
jmp case.0x4d4afa.2
mov eax, dword [esp + 0x24]
cmp byte [eax + 9], 8
jne 0x4d526c
mov ebp, dword [esp + 0x40]
test ebp, ebp
je 0x4d51fe
cmp dword [esp + 0x3c], 0
je 0x4d51fe
cmp dword [esp + 0x38], 0
je 0x4d51fe
cmp dword [esp + 0x10], 0
mov ecx, dword [esp + 0x28]
mov esi, ecx
jbe case.0x4d4afa.2
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x34]
mov dword [esp + 0x14], edx
movzx ax, byte [ecx + 1]
cmp ax, 0xff
jne 0x4d51a7
movzx eax, byte [ecx]
mov edx, dword [esp + 0x38]
jmp 0x4d51e7
test ax, ax
jne 0x4d51b5
mov edx, dword [esp + 0x30]
mov al, byte [edx + 8]
jmp 0x4d51ea
movzx ebx, byte [ecx]
movzx bx, byte [ebx + ebp]
mov edx, 0xff
sub edx, eax
imul dx, word [edi + 8]
imul ebx, eax
lea eax, [edx + ebx + 0x80]
movzx eax, ax
mov edx, eax
shr edx, 8
add edx, eax
sar edx, 8
movzx eax, dl
mov edx, dword [esp + 0x3c]
mov al, byte [eax + edx]
mov byte [esi], al
add ecx, 2
add esi, 1
sub dword [esp + 0x14], 1
jne 0x4d5193
jmp case.0x4d4afa.2
cmp dword [esp + 0x10], 0
mov ecx, dword [esp + 0x28]
mov esi, ecx
jbe case.0x4d4afa.2
mov ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x34]
mov al, byte [ecx + 1]
cmp al, 0xff
jne 0x4d5222
mov dl, byte [ecx]
jmp 0x4d525a
test al, al
jne 0x4d522f
mov eax, dword [esp + 0x30]
mov dl, byte [eax + 8]
jmp 0x4d525a
movzx bx, byte [ecx]
movzx ax, al
mov edx, 0xff
sub edx, eax
imul ebx, eax
imul dx, word [edi + 8]
lea eax, [edx + ebx + 0x80]
movzx eax, ax
mov edx, eax
shr edx, 8
add edx, eax
sar edx, 8
mov byte [esi], dl
add ecx, 2
add esi, 1
sub ebp, 1
jne 0x4d5217
jmp case.0x4d4afa.2
cmp dword [esp + 0x44], 0
je 0x4d5370
cmp dword [esp + 0x48], 0
je 0x4d5370
cmp dword [esp + 0x4c], 0
je 0x4d5370
cmp dword [esp + 0x10], 0
mov edx, dword [esp + 0x28]
mov esi, edx
jbe case.0x4d4afa.2
mov eax, dword [esp + 0x10]
mov bl, byte [esp + 0x50]
mov edi, dword [esp + 0x30]
add edx, 1
mov dword [esp + 0x14], eax
movzx ax, byte [edx + 1]
movzx cx, byte [edx + 2]
shl eax, 8
add eax, ecx
cmp ax, 0xffff
jne 0x4d52e2
movzx eax, byte [edx]
mov ebp, dword [esp + 0x44]
mov cl, bl
shr eax, cl
movzx ecx, byte [edx - 1]
mov eax, dword [ebp + eax*4]
mov ax, word [eax + ecx*2]
jmp 0x4d5355
test ax, ax
jne 0x4d52f4
mov cl, byte [edi + 9]
mov byte [esi], cl
mov al, byte [edi + 8]
jmp 0x4d5357
movzx edi, byte [edx]
mov ebp, dword [esp + 0x4c]
mov cl, bl
shr edi, cl
movzx ecx, byte [edx - 1]
mov edi, dword [ebp + edi*4]
movzx ecx, word [edi + ecx*2]
mov edi, dword [esp + 0x34]
movzx edi, word [edi + 8]
movzx eax, ax
imul ecx, eax
mov ebp, 0xffff
sub ebp, eax
imul edi, ebp
lea ecx, [ecx + edi + 0x8000]
mov eax, ecx
shr eax, 0x10
add eax, ecx
shr eax, 0x10
movzx eax, ax
mov edi, eax
and edi, 0xff
mov cl, bl
shr edi, cl
mov ecx, dword [esp + 0x48]
shr eax, 8
mov ecx, dword [ecx + edi*4]
mov ax, word [ecx + eax*2]
mov edi, dword [esp + 0x30]
mov byte [esi], ah
mov byte [esi + 1], al
add edx, 4
add esi, 2
sub dword [esp + 0x14], 1
jne 0x4d52b1
jmp case.0x4d4afa.2
cmp dword [esp + 0x10], 0
mov ecx, dword [esp + 0x28]
mov edx, ecx
jbe case.0x4d4afa.2
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
add ecx, 3
mov dword [esp + 0x14], eax
movzx ax, byte [ecx - 1]
movzx bx, byte [ecx]
shl eax, 8
add eax, ebx
cmp ax, 0xffff
jne 0x4d53b1
mov ax, word [ecx - 3]
mov word [edx], ax
jmp 0x4d5402
test ax, ax
jne 0x4d53c2
movzx eax, byte [esi + 9]
mov byte [edx], al
movzx eax, byte [esi + 8]
jmp 0x4d53ff
movzx si, byte [ecx - 3]
movzx bx, byte [ecx - 2]
movzx eax, ax
shl esi, 8
mov ebp, 0xffff
sub ebp, eax
add esi, ebx
movzx ebx, word [edi + 8]
movzx esi, si
imul ebx, ebp
imul esi, eax
lea esi, [esi + ebx + 0x8000]
mov eax, esi
shr eax, 0x10
add eax, esi
mov esi, dword [esp + 0x30]
shr eax, 0x10
mov byte [edx], ah
mov byte [edx + 1], al
add ecx, 4
add edx, 2
sub dword [esp + 0x14], 1
jne 0x4d5394
jmp case.0x4d4afa.2
mov ecx, dword [esp + 0x24]
cmp byte [ecx + 9], 8
jne 0x4d5671
mov ebp, dword [esp + 0x40]
test ebp, ebp
je 0x4d5584
cmp dword [esp + 0x3c], 0
je 0x4d5584
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x4d5584
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x30]
lea esi, [edi + 2]
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x34]
add edi, 1
lea ebx, [ebx]
mov al, byte [edi + 2]
cmp al, 0xff
jne 0x4d5499
movzx eax, byte [edi - 1]
movzx eax, byte [eax + ecx]
mov byte [esi - 2], al
movzx eax, byte [edi]
movzx eax, byte [eax + ecx]
mov byte [esi - 1], al
movzx eax, byte [edi + 1]
movzx eax, byte [eax + ecx]
jmp 0x4d556c
test al, al
jne 0x4d54b4
movzx eax, byte [ebx + 2]
mov byte [esi - 2], al
movzx eax, byte [ebx + 4]
mov byte [esi - 1], al
movzx eax, byte [ebx + 6]
jmp 0x4d556c
movzx ebx, byte [edi - 1]
movzx bx, byte [ebx + ebp]
mov bp, word [edx + 2]
movzx ax, al
mov ecx, 0xff
imul ebx, eax
sub ecx, eax
imul bp, cx
lea ebx, [ebx + ebp + 0x80]
movzx ebp, bx
mov ebx, ebp
shr ebx, 8
add ebx, ebp
mov ebp, dword [esp + 0x3c]
sar ebx, 8
movzx ebx, bl
movzx ebx, byte [ebx + ebp]
mov ebp, dword [esp + 0x40]
mov byte [esi - 2], bl
movzx ebx, byte [edi]
movzx bx, byte [ebx + ebp]
mov bp, word [edx + 4]
imul bp, cx
imul ebx, eax
lea ebx, [ebx + ebp + 0x80]
movzx ebp, bx
mov ebx, ebp
shr ebx, 8
add ebx, ebp
mov ebp, dword [esp + 0x3c]
sar ebx, 8
movzx ebx, bl
movzx ebx, byte [ebx + ebp]
mov ebp, dword [esp + 0x40]
mov byte [esi - 1], bl
movzx ebx, byte [edi + 1]
movzx bx, byte [ebx + ebp]
imul ebx, eax
mov ax, word [edx + 6]
imul ax, cx
lea eax, [ebx + eax + 0x80]
mov ebx, dword [esp + 0x30]
movzx eax, ax
mov ecx, eax
shr ecx, 8
add ecx, eax
sar ecx, 8
movzx eax, cl
mov ecx, dword [esp + 0x3c]
mov al, byte [eax + ecx]
mov ecx, dword [esp + 0x38]
mov byte [esi], al
add edi, 4
add esi, 3
sub dword [esp + 0x14], 1
jne 0x4d5470
jmp case.0x4d4afa.2
cmp dword [esp + 0x10], 0
jbe case.0x4d4afa.2
mov edi, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
lea esi, [edi + 2]
add edi, 1
mov dword [esp + 0x14], ecx
mov al, byte [edi + 2]
cmp al, 0xff
jne 0x4d55c3
movzx eax, byte [edi - 1]
mov byte [esi - 2], al
mov cl, byte [edi]
mov byte [esi - 1], cl
movzx eax, byte [edi + 1]
mov byte [esi], al
jmp 0x4d565b
test al, al
jne 0x4d55dd
movzx ecx, byte [edx + 2]
mov byte [esi - 2], cl
mov al, byte [edx + 4]
mov byte [esi - 1], al
movzx ecx, byte [edx + 6]
jmp 0x4d5659
movzx bx, byte [edi - 1]
mov bp, word [edx + 2]
movzx ax, al
mov ecx, 0xff
imul ebx, eax
sub ecx, eax
imul bp, cx
lea ebx, [ebx + ebp + 0x80]
movzx ebp, bx
mov ebx, ebp
shr ebx, 8
add ebx, ebp
sar ebx, 8
mov byte [esi - 2], bl
movzx bp, byte [edi]
mov bx, word [edx + 4]
imul bx, cx
imul ebp, eax
lea ebx, [ebx + ebp + 0x80]
movzx ebp, bx
mov ebx, ebp
shr ebx, 8
add ebx, ebp
sar ebx, 8
mov byte [esi - 1], bl
movzx bx, byte [edi + 1]
imul ebx, eax
mov ax, word [edx + 6]
imul ax, cx
lea eax, [ebx + eax + 0x80]
movzx eax, ax
mov ecx, eax
shr ecx, 8
add ecx, eax
sar ecx, 8
mov byte [esi], cl
add edi, 4
add esi, 3
sub dword [esp + 0x14], 1
jne 0x4d55a5
jmp case.0x4d4afa.2
mov edi, dword [esp + 0x44]
test edi, edi
je 0x4d58a9
cmp dword [esp + 0x48], 0
je 0x4d58a9
mov ebp, dword [esp + 0x4c]
test ebp, ebp
je 0x4d58a9
mov ecx, dword [esp + 0x10]
test ecx, ecx
jbe case.0x4d4afa.2
mov edx, dword [esp + 0x28]
mov bl, byte [esp + 0x50]
lea eax, [edx + 2]
add edx, 1
mov dword [esp + 0x1c], ecx
movzx si, byte [edx + 5]
movzx cx, byte [edx + 6]
shl esi, 8
add esi, ecx
cmp si, 0xffff
jne 0x4d571b
movzx esi, byte [edx]
movzx ecx, bl
shr esi, cl
mov dword [esp + 0x14], ecx
movzx ecx, byte [edx - 1]
mov esi, dword [edi + esi*4]
mov cx, word [esi + ecx*2]
mov byte [eax - 2], ch
mov byte [eax - 1], cl
movzx esi, byte [edx + 2]
movzx ecx, byte [esp + 0x14]
shr esi, cl
movzx ecx, byte [edx + 1]
mov esi, dword [edi + esi*4]
mov cx, word [esi + ecx*2]
mov byte [eax], ch
mov byte [eax + 1], cl
movzx ecx, byte [esp + 0x14]
movzx esi, byte [edx + 4]
shr esi, cl
movzx ecx, byte [edx + 3]
mov esi, dword [edi + esi*4]
mov cx, word [esi + ecx*2]
jmp 0x4d588d
test si, si
jne 0x4d5763
mov ecx, dword [esp + 0x30]
movzx ecx, byte [ecx + 3]
mov byte [eax - 2], cl
mov ecx, dword [esp + 0x30]
movzx ecx, byte [ecx + 2]
mov byte [eax - 1], cl
mov ecx, dword [esp + 0x30]
movzx ecx, byte [ecx + 5]
mov byte [eax], cl
mov ecx, dword [esp + 0x30]
movzx ecx, byte [ecx + 4]
mov byte [eax + 1], cl
mov ecx, dword [esp + 0x30]
movzx ecx, byte [ecx + 7]
mov byte [eax + 2], cl
mov ecx, dword [esp + 0x30]
movzx ecx, byte [ecx + 6]
jmp 0x4d5890
movzx ecx, bl
movzx ebx, byte [edx]
shr ebx, cl
mov dword [esp + 0x14], ecx
movzx ecx, byte [edx - 1]
mov ebx, dword [ebp + ebx*4]
movzx ecx, word [ebx + ecx*2]
mov ebx, dword [esp + 0x34]
movzx ebx, word [ebx + 2]
movzx esi, si
imul ecx, esi
mov edi, 0xffff
sub edi, esi
imul ebx, edi
lea ebx, [ecx + ebx + 0x8000]
mov ecx, ebx
shr ecx, 0x10
add ecx, ebx
shr ecx, 0x10
movzx ebp, cx
movzx ecx, word [esp + 0x50]
mov dword [esp + 0x18], ecx
mov ebx, ebp
and ebx, 0xff
shr ebx, cl
mov ecx, dword [esp + 0x48]
shr ebp, 8
mov ecx, dword [ecx + ebx*4]
mov cx, word [ecx + ebp*2]
mov byte [eax - 2], ch
mov byte [eax - 1], cl
movzx ebx, byte [edx + 2]
movzx ecx, byte [esp + 0x14]
shr ebx, cl
movzx ecx, byte [edx + 1]
mov ebp, dword [esp + 0x4c]
mov ebx, dword [ebp + ebx*4]
movzx ecx, word [ebx + ecx*2]
mov ebx, dword [esp + 0x34]
imul ecx, esi
movzx ebx, word [ebx + 4]
imul ebx, edi
lea ebx, [ecx + ebx + 0x8000]
mov ecx, ebx
shr ecx, 0x10
add ecx, ebx
shr ecx, 0x10
movzx ebp, cx
mov ecx, dword [esp + 0x18]
mov ebx, ebp
and ebx, 0xff
shr ebx, cl
mov ecx, dword [esp + 0x48]
shr ebp, 8
mov ecx, dword [ecx + ebx*4]
mov cx, word [ecx + ebp*2]
mov ebp, dword [esp + 0x4c]
mov byte [eax], ch
mov byte [eax + 1], cl
movzx ecx, byte [esp + 0x14]
movzx ebx, byte [edx + 4]
shr ebx, cl
movzx ecx, byte [edx + 3]
mov ebx, dword [ebp + ebx*4]
movzx ecx, word [ebx + ecx*2]
imul ecx, esi
mov esi, dword [esp + 0x34]
movzx esi, word [esi + 6]
imul esi, edi
lea esi, [ecx + esi + 0x8000]
mov ecx, esi
shr ecx, 0x10
add ecx, esi
shr ecx, 0x10
movzx esi, cx
mov ecx, dword [esp + 0x18]
mov edi, esi
and edi, 0xff
shr edi, cl
mov ecx, dword [esp + 0x48]
shr esi, 8
mov ecx, dword [ecx + edi*4]
mov cx, word [ecx + esi*2]
mov edi, dword [esp + 0x44]
mov bl, byte [esp + 0x50]
mov byte [eax + 2], ch
mov byte [eax + 3], cl
add edx, 8
add eax, 6
sub dword [esp + 0x1c], 1
jne 0x4d56b2
jmp case.0x4d4afa.2
mov ecx, dword [esp + 0x10]
test ecx, ecx
jbe case.0x4d4afa.2
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x30]
lea eax, [edx + 2]
add edx, 7
mov dword [esp + 0x1c], ecx
jmp 0x4d58d0
movzx cx, byte [edx - 1]
movzx di, byte [edx]
shl ecx, 8
add ecx, edi
cmp cx, 0xffff
jne 0x4d58fc
lea ecx, [edx - 7]
mov ebx, dword [ecx]
lea edi, [eax - 2]
mov dword [edi], ebx
mov cx, word [ecx + 4]
mov word [edi + 4], cx
jmp 0x4d59ee
test cx, cx
jne 0x4d592c
movzx ecx, byte [esi + 3]
mov byte [eax - 2], cl
movzx ecx, byte [esi + 2]
mov byte [eax - 1], cl
movzx ecx, byte [esi + 5]
mov byte [eax], cl
movzx ecx, byte [esi + 4]
mov byte [eax + 1], cl
movzx ecx, byte [esi + 7]
mov byte [eax + 2], cl
movzx ecx, byte [esi + 6]
jmp 0x4d59eb
movzx si, byte [edx - 5]
movzx di, byte [edx - 4]
movzx bx, byte [edx - 2]
movzx bp, byte [edx - 6]
movzx ecx, cx
shl esi, 8
add esi, edi
movzx di, byte [edx - 3]
mov dword [esp + 0x14], ecx
shl edi, 8
add edi, ebx
mov ebx, 0xffff
sub ebx, ecx
mov dword [esp + 0x18], ebx
movzx bx, byte [edx - 7]
movzx edi, di
shl ebx, 8
add ebx, ebp
movzx ebp, bx
mov ebx, dword [esp + 0x18]
imul ebp, ecx
mov ecx, dword [esp + 0x30]
movzx ecx, word [ecx + 2]
imul ecx, ebx
lea ebp, [ecx + ebp + 0x8000]
mov ecx, ebp
shr ecx, 0x10
add ecx, ebp
shr ecx, 0x10
mov byte [eax - 2], ch
mov byte [eax - 1], cl
mov ecx, dword [esp + 0x30]
movzx ecx, word [ecx + 4]
imul ecx, ebx
movzx ebp, si
mov esi, dword [esp + 0x14]
imul ebp, esi
imul edi, esi
lea ebp, [ecx + ebp + 0x8000]
mov ecx, ebp
shr ecx, 0x10
add ecx, ebp
shr ecx, 0x10
mov byte [eax], ch
mov byte [eax + 1], cl
mov ecx, dword [esp + 0x30]
movzx ecx, word [ecx + 6]
imul ecx, ebx
lea esi, [ecx + edi + 0x8000]
mov ecx, esi
shr ecx, 0x10
add ecx, esi
mov esi, dword [esp + 0x30]
shr ecx, 0x10
mov byte [eax + 2], ch
mov byte [eax + 3], cl
add edx, 8
add eax, 6
sub dword [esp + 0x1c], 1
jne 0x4d58d0
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x18]
mov al, byte [ecx + 8]
test al, 4
je 0x4d5a46
add byte [ecx + 0xa], 0xff
mov dl, byte [ecx + 0xa]
and al, 0xfb
mov byte [ecx + 8], al
mov al, byte [ecx + 9]
imul dl
mov byte [ecx + 0xb], al
cmp al, 8
movzx eax, al
jb 0x4d5a38
shr eax, 3
imul eax, dword [esp + 4]
mov dword [ecx + 4], eax
pop ebp
add esp, 0x10
ret
imul eax, dword [esp + 4]
add eax, 7
shr eax, 3
mov dword [ecx + 4], eax
pop ebp
add esp, 0x10
ret