Function at 0x10004740
Capabilities:
Parse pe header

Disassembly:
sub esp, 0x30
movzx edx, word [esp + 0x3c]
push ebx
push ebp
mov ebp, dword [esp + 0x48]
mov al, byte [ebp]
push esi
mov esi, dword [esp + 0x44]
xor ebx, ebx
add edx, esi
test al, al
push edi
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], ebx
mov ecx, ebp
mov edi, 1
je 0x10004794
cmp al, 0x41
je 0x10004790
cmp al, 0x61
je 0x10004790
cmp al, 0x50
je 0x10004790
cmp al, 0x70
je 0x10004790
mov al, byte [ecx + 1]
inc ecx
test al, al
jne 0x10004776
jmp 0x10004794
mov dword [esp + 0x2c], edi
mov ecx, esi
mov esi, dword [esp + 0x44]
mov byte [esp + 0x13], 0x20
mov dword [esp + 0x14], ecx
mov al, byte [ebp]
test al, al
je 0x10004c2b
movsx eax, al
cmp eax, 0x61
jl 0x100047be
cmp eax, 0x7a
jg 0x100047be
add eax, 0xffffffe0
cmp al, 0x46
jne 0x100047cd
inc ebp
mov dword [esp + 0x20], edi
mov dword [esp + 0x50], ebp
jmp 0x100047a3
cmp al, 0x45
jne 0x100047dc
inc ebp
mov dword [esp + 0x20], ebx
mov dword [esp + 0x50], ebp
jmp 0x100047a3
cmp al, 0x4d
je 0x1000482d
cmp al, 0x44
je 0x1000482d
cmp al, 0x59
je 0x1000482d
cmp al, 0x4a
je 0x1000482d
cmp al, 0x41
je 0x1000482d
cmp al, 0x48
je 0x1000482d
cmp al, 0x4e
je 0x1000482d
cmp al, 0x53
je 0x1000482d
cmp al, 0x49
je 0x1000482d
cmp al, 0x55
je 0x1000482d
cmp al, 0x50
jne 0x10004815
cmp byte [esi + 7], 0xc
jae 0x1000482d
inc ebp
mov dword [esp + 0x50], ebp
jmp 0x100047a3
cmp ecx, edx
mov byte [esp + 0x13], al
jae 0x10004822
mov al, byte [ebp]
mov byte [ecx], al
inc ecx
inc ebp
mov dword [esp + 0x50], ebp
jmp 0x1000479f
mov bl, byte [ebp]
cmp bl, 0x61
jl 0x10004842
cmp bl, 0x7a
mov dword [esp + 0x28], 0xffffffff
jle 0x10004846
mov dword [esp + 0x28], edi
mov edi, 1
mov dword [esp + 0x24], edi
movsx edx, al
mov cl, byte [edi + ebp]
movsx eax, cl
cmp eax, 0x61
jl 0x10004865
cmp eax, 0x7a
jg 0x10004865
add eax, 0xffffffe0
cmp eax, edx
jne 0x10004878
cmp cl, bl
je 0x10004875
mov dword [esp + 0x28], 0
inc edi
jmp 0x10004852
cmp edi, 1
mov dword [esp + 0x24], edi
mov dword [esp + 0x18], edi
jle 0x1000488f
cmp bl, byte [ebp + 1]
mov byte [esp + 0x4c], 0
jne 0x10004894
mov byte [esp + 0x4c], 0x30
lea eax, [edx - 0x41]
xor ebp, ebp
cmp eax, 0x18
ja case.0x100048a9.66
movzx ecx, byte [eax + 0x10004c6c]
jmp dword [ecx*4 + 0x10004c3c]
cmp byte [esp + 0x13], 0x3a
jne 0x100048c0
movzx ebp, byte [esi + 8]
jmp case.0x100048a9.66
cmp edi, 2
jle 0x1000498e
mov al, byte [esi + 2]
cmp al, 0xc
jae 0x10004a23
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x10004971
cmp edi, 4
movzx edx, al
mov esi, dword [edx*4 + 0x10064174]
jne 0x1000491a
cmp al, 6
je 0x1000491a
cmp al, 8
je 0x1000491a
mov eax, esi
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10004900
sub eax, edx
cmp eax, 4
jbe 0x1000491a
mov dword [esp + 0x18], 3
mov byte [esp + 0x4c], cl
test esi, esi
je case.0x100048a9.66
xor edi, edi
mov byte [esp + 0x4c], 0
mov eax, esi
lea edx, [eax + 1]
mov edi, edi
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10004930
mov ebp, dword [esp + 0x24]
sub eax, edx
cmp eax, ebp
jle 0x10004b81
test edi, edi
je 0x10004b81
lea eax, [ebp - 1]
test eax, eax
jl 0x10004c07
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
inc eax
cmp ecx, edx
jae 0x10004968
mov byte [ecx], 0x2a
inc ecx
dec eax
jne 0x10004961
jmp 0x10004c03
cmp edi, 3
jne 0x10004982
movzx eax, al
mov esi, dword [eax*4 + 0x100640c4]
jmp 0x1000491a
movzx ecx, al
mov esi, dword [ecx*4 + 0x10064090]
jmp 0x1000491a
movzx ebp, byte [esi + 2]
inc ebp
jmp case.0x100048a9.66
cmp edi, 1
jne 0x100049a7
movzx ebp, byte [esi + 3]
inc ebp
jmp case.0x100048a9.66
cmp edi, 2
jne 0x100049b5
movzx ebp, byte [esi + 6]
jmp case.0x100048a9.66
mov al, byte [esi + 3]
cmp al, 7
jae 0x10004a23
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x100049d3
movzx edx, al
mov esi, dword [edx*4 + 0x10064154]
jmp 0x1000491a
movzx ecx, al
shl ecx, 2
cmp edi, 3
mov esi, dword [ecx + 0x10064070]
je 0x10004a0c
mov eax, esi
lea edi, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x100049f0
mov edx, dword [esp + 0x24]
sub eax, edi
cmp edx, eax
je 0x10004a0c
mov esi, dword [ecx + 0x10064050]
jmp 0x1000491a
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10004a11
sub eax, edx
mov dword [esp + 0x18], eax
jmp 0x1000491a
mov esi, 0x10052354
jmp 0x10004922
movzx ebp, word [esi + 4]
inc ebp
jmp case.0x100048a9.66
cmp edi, 2
jle 0x10004a3e
movzx ebp, word [esi]
jmp case.0x100048a9.66
movzx eax, word [esi]
cdq
mov ecx, 0x64
idiv ecx
mov ebp, edx
push 0xa
lea eax, [esp + 0x38]
push eax
push ebp
call fcn.100504ed
add esp, 0xc
lea esi, [esp + 0x34]
mov edi, 1
jmp 0x10004929
mov eax, dword [esp + 0x2c]
test eax, eax
movzx ebp, byte [esi + 7]
je case.0x100048a9.66
cmp ebp, 0xc
jle 0x10004a7f
sub ebp, 0xc
jmp case.0x100048a9.66
test ebp, ebp
jne case.0x100048a9.66
mov ebp, 0xc
jmp case.0x100048a9.66
mov ecx, dword [esi + 0xc]
mov eax, 0x10624dd3
imul ecx
sar edx, 6
mov eax, edx
shr eax, 0x1f
add edx, eax
jmp 0x10004a49
mov ebp, dword [esi + 0xc]
jmp case.0x100048a9.66
cmp byte [esi + 7], 0xc
jae 0x10004abb
mov esi, 0x10052350
jmp 0x10004922
cmp byte [esi + 7], 0xc
jb case.0x100048a9.66
mov esi, 0x1005234c
jmp 0x10004922
mov eax, dword [esp + 0x30]
test eax, eax
jne 0x10004ade
movzx ebp, byte [esi + 9]
mov dword [esp + 0x30], 1
jmp case.0x100048a9.66
cmp edi, 6
mov ecx, dword [esi + 0xc]
jle 0x10004af1
mov edi, 6
mov dword [esp + 0x18], edi
jmp 0x10004b16
jge 0x10004b16
mov esi, 6
sub esi, edi
lea ebx, [ebx]
mov eax, 0x66666667
imul ecx
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
dec esi
mov ecx, edx
jne 0x10004b00
mov al, byte [esp + 0x4c]
test al, al
jne 0x10004b5b
test ecx, ecx
jle 0x10004b5d
mov eax, ecx
cdq
mov esi, 0xa
idiv esi
test edx, edx
jne 0x10004b56
mov eax, 0x66666667
imul ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
mov ecx, edx
mov eax, ecx
cdq
mov esi, 0xa
idiv esi
dec edi
test edx, edx
je 0x10004b30
mov dword [esp + 0x18], edi
mov byte [esp + 0x4c], 0x30
test ecx, ecx
je case.0x100048a9.66
push 0xa
lea edx, [esp + 0x38]
push edx
push ecx
call fcn.10050517
add esp, 0xc
lea esi, [esp + 0x34]
mov edi, 1
jmp 0x10004929
mov ecx, dword [esp + 0x18]
cmp eax, ecx
jle 0x10004bc8
mov eax, ecx
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
test eax, eax
mov ecx, edi
jle 0x10004c03
mov edx, dword [esp + 0x28]
sub esi, edi
mov edi, eax
cmp ecx, ebx
jae 0x10004bff
test dx, dx
mov al, byte [ecx + esi]
je 0x10004bfd
cmp al, 0x80
jae 0x10004bfd
test dx, dx
movzx eax, al
jle 0x10004bf0
cmp eax, 0x61
jl 0x10004bfd
cmp eax, 0x7a
jg 0x10004bfd
add eax, 0xffffffe0
jmp 0x10004bfd
mov dl, byte [esp + 0x4c]
test dl, dl
je 0x10004b8b
sub ecx, eax
dec ecx
js 0x10004b8b
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
inc ecx
mov edi, edi
cmp edi, ebx
jae 0x10004bea
mov dl, byte [esp + 0x4c]
mov byte [edi], dl
inc edi
dec ecx
jne 0x10004be0
jmp 0x10004b93
cmp eax, 0x41
jl 0x10004bfd
cmp eax, 0x5a
jg 0x10004bfd
add eax, 0x20
mov byte [ecx], al
inc ecx
dec edi
jne 0x10004ba1
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x14]
add eax, ebp
mov dword [esp + 0x50], eax
mov ebp, eax
mov edi, 1
xor ebx, ebx
jmp 0x100047a3
pop edi
pop esi
mov eax, ecx
mov ecx, dword [esp + 0x40]
pop ebp
sub eax, ecx
pop ebx
add esp, 0x30
ret