Function at 0x10005120
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebx
push esi
mov esi, ecx
mov bl, byte [esi + 4]
test bl, bl
je 0x10004138
mov eax, dword [0x10010978]
push edi
cdq
mov edi, 3
idiv edi
xor ecx, ecx
mov cl, byte [esi + 7]
pop edi
dec edx
je 0x1000411a
dec edx
jne 0x10004125
and ebx, 0xf
jmp 0x10004123
and ebx, 0xff
shr ebx, 4
add ecx, ebx
mov eax, dword [esi + 8]
mov edx, dword [esi + 0xc]
push eax
call fcn.10004140
mov dword [esi + 0x28], eax
or byte [esi + 1], 1
pop esi
pop ebx
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x100041ce
xor eax, eax
mov al, byte [ecx + 4]
test al, al
je 0x100041f0
and eax, 0xff
shl eax, 2
mov dword [ecx + 0x58], eax
ret
mov eax, dword [ecx + 0x58]
mov edx, dword [ecx + 0x24]
sub edx, eax
mov eax, edx
mov dword [ecx + 0x24], edx
mov edx, 1
cmp eax, edx
jge 0x100041e7
mov dword [ecx + 0x24], edx
mov eax, dword [ecx + 0x24]
mov dword [ecx + 0x28], eax
or byte [ecx + 1], dl
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x1000421e
xor eax, eax
mov al, byte [ecx + 4]
test al, al
je 0x10004247
and eax, 0xff
shl eax, 2
mov dword [ecx + 0x5c], eax
ret
mov eax, dword [ecx + 0x5c]
mov edx, dword [ecx + 0x24]
add edx, eax
mov eax, edx
cmp eax, 0x7cff
mov dword [ecx + 0x24], edx
jle 0x10004239
mov dword [ecx + 0x24], 0x7cff
mov al, byte [ecx + 1]
mov edx, dword [ecx + 0x24]
or al, 1
mov dword [ecx + 0x28], edx
mov byte [ecx + 1], al
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x100043e6
xor eax, eax
mov al, byte [ecx + 4]
test al, 0xf
je 0x100043cc
xor edx, edx
mov dl, al
and edx, 0xf
mov dword [ecx + 0x44], edx
and eax, 0xff
test eax, 0xfffffff0
je 0x10004480
shr eax, 2
and eax, 0xfffffffc
mov dword [ecx + 0x48], eax
ret
xor edx, edx
mov dl, byte [ecx + 0x3c]
push ebx
mov ebx, dword [ecx + 0x40]
mov eax, ebx
sar eax, 2
and eax, 0x1f
push esi
and edx, 3
sub edx, 0
je 0x10004425
dec edx
je 0x10004411
dec edx
je 0x1000440a
xor edx, edx
jmp 0x1000442d
mov edx, 0xff
jmp 0x1000442d
test bl, 0x80
lea edx, [eax*8]
je 0x1000442d
xor edx, 0xff
jmp 0x1000442d
xor edx, edx
mov dl, byte [eax + 0x1000e0dc]
mov eax, dword [ecx + 0x44]
mov esi, dword [ecx + 0x24]
imul eax, edx
sar eax, 7
test bl, 0x80
mov dword [ecx + 0x28], esi
mov edx, 1
je 0x10004460
sub esi, eax
cmp esi, edx
mov dword [ecx + 0x28], esi
jge 0x10004473
or byte [ecx + 1], dl
mov eax, dword [ecx + 0x48]
add eax, ebx
pop esi
mov dword [ecx + 0x28], edx
mov dword [ecx + 0x40], eax
pop ebx
ret
add eax, esi
cmp eax, 0x7cff
mov dword [ecx + 0x28], eax
jle 0x10004473
mov dword [ecx + 0x28], 0x7cff
or byte [ecx + 1], dl
mov eax, dword [ecx + 0x48]
add eax, ebx
pop esi
mov dword [ecx + 0x40], eax
pop ebx
ret
mov eax, dword [0x10010978]
test eax, eax
push esi
mov esi, ecx
jne 0x10004517
call fcn.10004490
and byte [esi + 1], 0xf6
pop esi
ret
call fcn.10004250
mov ecx, esi
call fcn.10004490
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
push esi
mov esi, ecx
je 0x10004543
call fcn.100042d0
mov ecx, esi
pop esi
jmp fcn.10004490
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004586
xor eax, eax
mov al, byte [ecx + 4]
test al, 0xf
je 0x1000456c
xor edx, edx
mov dl, al
and edx, 0xf
mov dword [ecx + 0x50], edx
and eax, 0xff
test eax, 0xfffffff0
je 0x10004625
shr eax, 2
and eax, 0xfffffffc
mov dword [ecx + 0x54], eax
ret
xor edx, edx
mov dl, byte [ecx + 0x3c]
push ebx
mov ebx, dword [ecx + 0x4c]
mov eax, ebx
sar eax, 2
and eax, 0x1f
push esi
and edx, 0x30
je 0x100045cd
cmp edx, 0x10
je 0x100045b9
xor eax, eax
cmp edx, 0x20
sete al
dec eax
and eax, 0xffffff01
add eax, 0xff
mov edx, eax
jmp 0x100045d5
test bl, 0x80
lea edx, [eax*8]
je 0x100045d5
xor edx, 0xff
jmp 0x100045d5
xor edx, edx
mov dl, byte [eax + 0x1000e0dc]
mov eax, dword [ecx + 0x50]
mov esi, dword [ecx + 0x10]
imul eax, edx
sar eax, 6
test bl, 0x80
mov dword [ecx + 0x14], esi
je 0x10004606
sub esi, eax
mov dword [ecx + 0x14], esi
jns 0x10004617
or byte [ecx + 1], 2
mov edx, dword [ecx + 0x54]
add edx, ebx
pop esi
mov dword [ecx + 0x14], 0
mov dword [ecx + 0x4c], edx
pop ebx
ret
add eax, esi
cmp eax, 0x40
mov dword [ecx + 0x14], eax
jle 0x10004617
mov dword [ecx + 0x14], 0x40
or byte [ecx + 1], 2
mov edx, dword [ecx + 0x54]
add edx, ebx
pop esi
mov dword [ecx + 0x4c], edx
pop ebx
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004645
xor eax, eax
mov al, byte [ecx + 4]
mov dword [ecx + 0x1c], eax
or byte [ecx + 1], 4
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004665
xor eax, eax
mov ah, byte [ecx + 4]
mov dword [ecx + 0x74], eax
or byte [ecx + 1], 0x28
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x100046a0
mov edx, dword [0x1000f268]
xor eax, eax
mov al, byte [ecx + 4]
xor cx, cx
mov cl, al
cmp cx, word [edx + 0x22]
jae 0x100046a0
and eax, 0xff
or byte [0x10010970], 1
mov dword [0x1001099c], eax
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x100046d7
xor eax, eax
mov al, byte [ecx + 4]
cmp eax, 0x40
mov dword [ecx + 0x10], eax
jle 0x100046cd
mov dword [ecx + 0x10], 0x40
mov eax, dword [ecx + 0x10]
mov dword [ecx + 0x14], eax
or byte [ecx + 1], 2
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004709
xor eax, eax
mov al, byte [ecx + 4]
mov ecx, eax
shr ecx, 4
and eax, 0xf
or byte [0x10010970], 2
lea ecx, [ecx + ecx*4]
lea edx, [eax + ecx*2]
mov dword [0x100109a0], edx
ret
xor edx, edx
push esi
mov esi, ecx
mov dl, byte [esi + 4]
mov ecx, edx
and ecx, 0xff
mov eax, ecx
shr eax, 4
dec eax
cmp eax, 0xd
ja case.default.0x1000472f
jmp dword [eax*4 + 0x100049c8]
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
and dl, 0xf
je 0x1000474e
shl dl, 2
mov byte [esi + 0x6a], dl
mov eax, dword [esi + 0x24]
xor ecx, ecx
mov cl, byte [esi + 0x6a]
sub eax, ecx
mov ecx, 1
cmp eax, ecx
mov dword [esi + 0x24], eax
jge 0x10004767
mov dword [esi + 0x24], ecx
mov al, byte [esi + 1]
mov edx, dword [esi + 0x24]
or al, cl
mov dword [esi + 0x28], edx
mov byte [esi + 1], al
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
and dl, 0xf
je 0x1000478f
shl dl, 2
mov byte [esi + 0x6b], dl
mov edx, dword [esi + 0x24]
xor eax, eax
mov al, byte [esi + 0x6b]
add edx, eax
mov eax, edx
cmp eax, 0x7cff
mov dword [esi + 0x24], edx
jle 0x100047ac
mov dword [esi + 0x24], 0x7cff
mov al, byte [esi + 1]
mov ecx, dword [esi + 0x24]
or al, 1
mov dword [esi + 0x28], ecx
mov byte [esi + 1], al
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
and dl, 0xf
mov byte [esi + 0x3d], dl
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
mov al, byte [esi + 0x3c]
mov cl, byte [esi + 0x3c]
xor al, dl
and al, 0xf
xor cl, al
mov byte [esi + 0x3c], cl
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
mov edx, dword [esi + 0xc]
and ecx, 0xf
sub ecx, 8
shl ecx, 4
mov dword [esi + 8], ecx
push ecx
xor ecx, ecx
mov cl, byte [esi + 7]
call fcn.10004140
mov dword [esi + 0x28], eax
or byte [esi + 1], 1
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
test dl, 0xf
je 0x1000487c
mov eax, dword [esi + 0xb0]
test eax, eax
je 0x10004844
dec eax
mov dword [esi + 0xb0], eax
jmp 0x1000484d
and ecx, 0xf
mov dword [esi + 0xb0], ecx
mov eax, dword [esi + 0xb0]
test eax, eax
je case.default.0x1000472f
mov ecx, dword [esi + 0xac]
mov edx, dword [0x10010988]
or byte [0x10010970], 1
mov dword [0x100109a0], ecx
mov dword [0x1001099c], edx
pop esi
ret
mov eax, dword [0x1001097c]
mov dword [esi + 0xac], eax
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
mov cl, byte [esi + 0x3c]
and cl, 0xf
shl dl, 4
or cl, dl
mov byte [esi + 0x3c], cl
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
mov al, byte [esi + 1]
and ecx, 0xf
shl ecx, 4
or al, 4
mov dword [esi + 0x1c], ecx
mov byte [esi + 1], al
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x100048d7
mov ecx, esi
pop esi
jmp fcn.10004e40
test dl, 0xf
je case.default.0x1000472f
and ecx, 0xf
cdq
idiv ecx
test edx, edx
jne case.default.0x1000472f
mov ecx, esi
pop esi
jmp fcn.10004e40
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
mov edx, dword [esi + 0x10]
and ecx, 0xf
add edx, ecx
mov eax, edx
cmp eax, 0x40
mov dword [esi + 0x10], edx
jle 0x1000491c
mov dword [esi + 0x10], 0x40
mov al, byte [esi + 1]
mov edx, dword [esi + 0x10]
or al, 2
mov dword [esi + 0x14], edx
mov byte [esi + 1], al
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
mov eax, dword [esi + 0x10]
and ecx, 0xf
sub eax, ecx
mov dword [esi + 0x10], eax
jns 0x1000494d
mov dword [esi + 0x10], 0
mov eax, dword [esi + 0x10]
mov dword [esi + 0x14], eax
or byte [esi + 1], 2
pop esi
ret
mov eax, dword [0x10010978]
and ecx, 0xf
cmp eax, ecx
jne case.default.0x1000472f
mov al, byte [esi + 1]
or al, 2
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
mov byte [esi + 1], al
pop esi
ret
and byte [esi + 1], 0x10
mov eax, dword [0x10010978]
and ecx, 0xf
cmp eax, ecx
jne case.default.0x1000472f
mov ecx, esi
call fcn.10004e40
or byte [esi + 1], 6
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne case.default.0x1000472f
mov dl, byte [0x10010970]
mov eax, 4
test al, dl
jne case.default.0x1000472f
and ecx, 0xf
inc ecx
or word [0x10010970], ax
mov dword [0x100109a4], ecx
pop esi
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004a32
xor eax, eax
mov al, byte [ecx + 4]
cmp al, 0x20
jb 0x10004a24
and eax, 0xff
or byte [0x10010970], 8
mov dword [0x10010990], eax
ret
cmp al, 1
jb 0x10004a32
and eax, 0xff
mov dword [0x1001098c], eax
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004a69
xor eax, eax
mov al, byte [ecx + 4]
cmp eax, 0x40
mov dword [0x10010994], eax
jle 0x10004a62
mov dword [0x10010994], 0x40
or byte [0x10010970], 0x10
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004a8d
xor eax, eax
mov al, byte [ecx + 4]
test al, al
je 0x10004aea
and eax, 0xff
mov dword [0x10010998], eax
ret
mov eax, dword [0x10010998]
and eax, 0xff
test eax, 0xfffffff0
je 0x10004ac6
mov ecx, dword [0x10010994]
shr eax, 4
add ecx, eax
cmp ecx, 0x40
mov dword [0x10010994], ecx
jle 0x10004ae3
mov dword [0x10010994], 0x40
or byte [0x10010970], 0x10
ret
mov ecx, dword [0x10010994]
and eax, 0xf
sub ecx, eax
mov dword [0x10010994], ecx
jns 0x10004ae3
mov dword [0x10010994], 0
or byte [0x10010970], 0x10
ret
mov edx, dword [0x10010978]
xor eax, eax
mov al, byte [ecx + 4]
cmp edx, eax
jne 0x10004b04
jmp fcn.10004e10
ret
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004b34
mov al, byte [ecx + 4]
test al, al
je 0x10004b7c
mov byte [ecx + 0x69], al
ret
xor eax, eax
mov al, byte [ecx + 0x69]
test eax, 0xfffffff0
je 0x10004b64
mov edx, dword [ecx + 0x1c]
shr eax, 4
add edx, eax
mov eax, edx
cmp eax, 0xff
mov dword [ecx + 0x1c], edx
jle 0x10004b78
mov al, byte [ecx + 1]
or al, 4
mov dword [ecx + 0x1c], 0xff
mov byte [ecx + 1], al
ret
mov edx, dword [ecx + 0x1c]
and eax, 0xf
sub edx, eax
mov dword [ecx + 0x1c], edx
jns 0x10004b78
mov dword [ecx + 0x1c], 0
or byte [ecx + 1], 4
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004ba0
mov al, byte [ecx + 4]
test al, 0xf0
je 0x10004b98
mov dl, al
shr dl, 4
mov byte [ecx + 0x6e], dl
and al, 0xf
je 0x10004b9f
mov byte [ecx + 0x6f], al
ret
mov al, byte [ecx + 0x70]
mov dl, byte [ecx + 0x6f]
inc al
cmp al, dl
mov byte [ecx + 0x70], al
jb 0x10004b9f
xor eax, eax
mov al, byte [ecx + 0x6e]
mov byte [ecx + 0x70], 0
push esi
mov esi, dword [ecx + 0x10]
movsx edx, byte [eax + 0x1000e0fc]
add esi, edx
mov dword [ecx + 0x10], esi
movsx eax, byte [eax + 0x1000e10c]
mov edx, esi
imul eax, edx
sar eax, 4
mov dword [ecx + 0x10], eax
jns 0x10004be0
xor eax, eax
jmp 0x10004bea
cmp eax, 0x40
jle 0x10004bea
mov eax, 0x40
mov dword [ecx + 0x10], eax
xor eax, eax
mov al, byte [ecx + 2]
cmp al, 0x10
mov dl, 2
jb 0x10004c14
cmp al, 0x50
ja 0x10004c14
push ebx
mov bl, byte [ecx + 1]
mov esi, eax
and esi, 0xff
sub esi, 0x10
or bl, dl
mov byte [ecx + 1], bl
mov dword [ecx + 0x10], esi
pop ebx
cmp al, 0xc0
pop esi
jb 0x10004c2a
cmp al, 0xcf
ja 0x10004c2a
and eax, 0xf
shl eax, 4
mov dword [ecx + 0x1c], eax
or byte [ecx + 1], 4
mov eax, dword [ecx + 0x10]
mov dword [ecx + 0x14], eax
or byte [ecx + 1], dl
jmp fcn.10004d70
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004c53
mov al, byte [ecx + 4]
test al, al
je 0x10004c53
mov byte [ecx + 0x71], al
mov al, byte [ecx + 0x73]
mov dl, al
dec dl
test al, al
mov byte [ecx + 0x73], dl
jne 0x10004c85
mov dl, byte [ecx + 0x72]
test dl, dl
je 0x10004c72
xor eax, eax
mov al, byte [ecx + 0x71]
and eax, 0xf
jmp 0x10004c7a
xor eax, eax
mov al, byte [ecx + 0x71]
shr eax, 4
test dl, dl
mov byte [ecx + 0x73], al
sete al
mov byte [ecx + 0x72], al
mov al, byte [ecx + 0x72]
test al, al
je 0x10004c97
mov eax, dword [ecx + 0x10]
mov dword [ecx + 0x14], eax
or byte [ecx + 1], 2
ret
xor eax, eax
mov dword [ecx + 0x14], eax
or byte [ecx + 1], 2
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004d2c
xor edx, edx
mov dl, byte [ecx + 4]
mov eax, edx
and eax, 0xff
and eax, 0xfffffff0
cmp eax, 0x10
jne 0x10004cfa
and dl, 0xf
je 0x10004cd5
mov byte [ecx + 0x6c], dl
mov edx, dword [ecx + 0x24]
xor eax, eax
mov al, byte [ecx + 0x6c]
sub edx, eax
mov eax, edx
mov dword [ecx + 0x24], edx
mov edx, 1
cmp eax, edx
jge 0x10004cf0
mov dword [ecx + 0x24], edx
mov eax, dword [ecx + 0x24]
mov dword [ecx + 0x28], eax
or byte [ecx + 1], dl
ret
cmp eax, 0x20
jne 0x10004d2c
and dl, 0xf
je 0x10004d07
mov byte [ecx + 0x6d], dl
mov eax, dword [ecx + 0x24]
xor edx, edx
mov dl, byte [ecx + 0x6d]
add eax, edx
cmp eax, 0x7cff
mov dword [ecx + 0x24], eax
jle 0x10004d22
mov dword [ecx + 0x24], 0x7cff
mov eax, dword [ecx + 0x24]
mov dword [ecx + 0x28], eax
or byte [ecx + 1], 1
ret
mov eax, dword [0x10010978]
test eax, eax
jne 0x10004d56
mov eax, dword [0x100109a8]
test eax, eax
je 0x10004d56
mov edx, dword [0x1001097c]
mov cl, byte [ecx + 4]
push edx
mov edx, dword [0x10010988]
push edx
push ecx
call eax
ret
ret
xor eax, eax
mov al, byte [ecx + 3]
test al, al
jne 0x10005130
mov dl, byte [ecx + 4]
test dl, dl
je case.default.0x10005139
cmp al, 0x24
jae case.default.0x10005139
and eax, 0xff
jmp dword [eax*4 + 0x1000e21c]
ret