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

Disassembly:
sub esp, 0x48
push ebx
mov ebx, dword [esp + 0x6c]
mov eax, ebx
cdq
and ebx, 1
push ebp
sub eax, edx
mov dword [esp + 0x70], ebx
mov ebp, eax
mov eax, dword [esp + 0x64]
mov ecx, eax
sar ebp, 1
push esi
and ecx, 1
push edi
mov dword [esp + 0x44], ecx
je 0x1004963c
shr eax, 5
mov ecx, 4
not eax
and eax, 1
or eax, 8
jmp 0x1004965c
test al, 0x20
je 0x10049647
mov eax, 5
jmp 0x1004965a
test al, 0x40
je 0x10049655
mov eax, 8
lea ecx, [eax - 7]
jmp 0x1004965c
mov eax, 7
xor ecx, ecx
mov esi, dword [esp + 0x60]
add eax, ecx
mov dword [esp + 0x3c], eax
lea edx, [esi + 1]
nop dword [eax]
mov al, byte [esi]
inc esi
test al, al
jne 0x10049670
mov edi, dword [esp + 0x3c]
sub esi, edx
mov dword [esp + 0x40], esi
imul esi, edi
sub esi, ecx
mov eax, esi
imul eax, ebp
cdq
sub eax, edx
sar eax, 1
sub dword [esp + 0x64], eax
test ebx, ebx
je 0x100496b1
mov eax, esi
mov esi, dword [esp + 0x64]
cdq
and edx, 3
add eax, edx
sar eax, 2
neg eax
add esi, eax
mov dword [esp + 0x64], esi
jmp 0x100496b5
mov esi, dword [esp + 0x64]
xor ecx, ecx
mov dword [esp + 0x28], ecx
cmp dword [esp + 0x40], ecx
jle 0x1004998f
xor edx, edx
xor eax, eax
imul edi, ebp
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], edi
test ebx, ebx
je 0x100496eb
mov eax, edx
cdq
sub eax, edx
mov edx, dword [esp + 0x18]
sar eax, 1
add eax, dword [esp + 0x2c]
lea ebx, [eax + esi]
mov dword [esp + 0x34], 0
mov eax, dword [esp + 0x60]
mov al, byte [ecx + eax]
cmp al, 0x21
jb 0x10049960
cmp al, 0x7f
jb 0x10049711
cmp al, 0xa1
jb 0x10049960
mov esi, dword [esp + 0x44]
test esi, esi
je 0x10049729
cmp al, 0x30
jb 0x10049966
cmp al, 0x39
ja 0x10049966
cmp dword [esp + 0x68], 0
jl 0x10049966
movzx ecx, al
mov dl, 0x7f
cmp dl, al
mov edx, ecx
sbb eax, eax
and eax, 0x22
add eax, 0x21
sub edx, eax
mov eax, dword [esp + 0x6c]
and eax, 0x20
test esi, esi
je 0x1004978b
lea edx, [ecx - 0x30]
test eax, eax
mov ecx, 0x100c1618
mov esi, 0x100c1500
cmovne esi, ecx
mov edi, 0x100
mov ecx, eax
neg ecx
sbb ecx, ecx
add ecx, 9
mov dword [esp + 0x10], ecx
mov ecx, eax
neg ecx
sbb ecx, ecx
add ecx, 0xe
test eax, eax
mov eax, 0x200
cmove edi, eax
jmp 0x100497db
test eax, eax
je 0x100497a6
mov edi, 0x20
mov dword [esp + 0x10], 5
mov esi, 0x100c07b0
lea ecx, [edi - 0x17]
jmp 0x100497db
test byte [esp + 0x6c], 0x40
mov ecx, 0xe
mov esi, 0x100bf2f8
je 0x100497ce
mov dword [esp + 0x10], 8
mov edi, 0x100
mov dword [esp + 0x34], 1
jmp 0x100497db
mov dword [esp + 0x10], 7
mov edi, 0x80
ror edi, 1
mov eax, ebx
neg eax
mov dword [esp + 0x4c], edi
mov edi, ecx
imul edi, edx
xor edx, edx
test ebx, ebx
cmovns eax, edx
test ebx, ebx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x68]
cmovns edx, ebx
mov ebx, dword [esp + 0x74]
add eax, ecx
sub ebx, dword [esp + 0x68]
cmp eax, dword [esp + 0x74]
mov eax, dword [esp + 0x68]
cmovle ebx, ecx
mov dword [esp + 0x48], edx
mov ecx, dword [esp + 0x70]
imul eax, ecx
mov dword [esp + 0x54], ebx
add eax, edx
xor edx, edx
add eax, dword [esp + 0x5c]
test ebx, ebx
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], edx
jle 0x10049952
lea edi, [esi + edi*2]
mov esi, eax
mov dword [esp + 0x20], edi
nop word [eax + eax]
mov eax, esi
test ebp, ebp
jle 0x10049912
mov ebx, ecx
mov dword [esp + 0x38], ebp
sub ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x50], ebx
nop dword [eax]
lea edi, [ebx + esi]
xor edx, edx
mov ebx, dword [esp + 0x30]
mov eax, esi
cmp ebx, ecx
jge 0x100498d9
nop
cmp eax, edi
jae 0x100498e7
mov esi, dword [esp + 0x4c]
mov ecx, ebx
shr esi, cl
mov ecx, dword [esp + 0x20]
movzx ecx, word [ecx]
and esi, ecx
xor ecx, ecx
cmp eax, edi
jae 0x100498cc
test esi, esi
je 0x100498a5
mov edx, dword [esp + 0x34]
jmp 0x100498ab
test edx, edx
je 0x100498ae
xor edx, edx
mov byte [eax], 0x31
inc ecx
inc eax
cmp ecx, ebp
jl 0x10049897
cmp eax, edi
jae 0x100498cc
cmp dword [esp + 0x78], 0
je 0x100498cc
test bl, 1
je 0x100498cc
test esi, esi
je 0x100498cb
mov byte [eax], 0x31
inc eax
mov ecx, dword [esp + 0x10]
inc ebx
cmp ebx, ecx
jl 0x10049880
mov esi, dword [esp + 0x14]
cmp eax, edi
jae 0x100498eb
test edx, edx
je 0x100498eb
mov byte [eax], 0x31
inc eax
jmp 0x100498eb
mov esi, dword [esp + 0x14]
add esi, dword [esp + 0x70]
sub dword [esp + 0x38], 1
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x14], esi
jne 0x10049870
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x1c]
test ebx, ebx
je 0x1004993c
test dl, 1
je 0x1004993c
sub eax, esi
add eax, ecx
push eax
mov eax, esi
sub eax, ecx
push eax
push esi
call fcn.10058800
mov ecx, dword [esp + 0x7c]
add esp, 0xc
mov edx, dword [esp + 0x1c]
add esi, ecx
mov dword [esp + 0x14], esi
inc edx
add edi, 2
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], edi
cmp edx, dword [esp + 0x54]
jl 0x10049850
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x24]
jmp 0x1004996a
mov ebx, dword [esp + 0x78]
jmp 0x1004996e
mov ebx, dword [esp + 0x78]
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x2c]
inc ecx
add edx, dword [esp + 0x3c]
add eax, edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], eax
cmp ecx, dword [esp + 0x40]
jl 0x100496d8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x48
ret