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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x4f0
mov eax, dword [ebp + 0x24]
mov esi, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
mov ebx, 0x1e314ccd
cmp eax, 3
je 0x508ca1
cmp eax, 4
jne 0x508d02
mov eax, 0x1e314ccd
xor al, 0x93
mov dword [esp + 0x4c], eax
mov dword [esp + 0xb0], 0
mov dword [esp + 0xac], 0
xorps xmm0, xmm0
movaps xmmword [esp + 0x90], xmm0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
mov eax, dword [0x7dc5a8]
mov dword [esp + 0x80], eax
movsd xmm0, qword [0x7dc5a0]
movsd qword [esp + 0x78], xmm0
mov eax, dword [0x7dc5e8]
mov dword [esp + 0x70], eax
movsd xmm0, qword [0x7dc5e0]
movsd qword [esp + 0x68], xmm0
movsd xmm0, qword [0x7dc5d8]
movsd qword [esp + 0x60], xmm0
call fcn.005959e0
test eax, eax
jne 0x508f57
mov esi, 0x7000002b
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], eax
mov byte [esp + 0x54], al
mov byte [esp + 0x53], al
mov byte [esp + 0x58], al
mov dword [esp + 0x5c], eax
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x4c]
jmp 0x509a77
mov dword [esp + 0xcc], 0
mov dword [esp + 0xc8], 0
test edi, edi
jne 0x508fa2
imul edi, edi
and edi, 3
cmp edi, 2
jae 0x508fa2
add bl, 0x91
movzx eax, bl
cmp eax, 0x5e
jne 0x509043
test edx, edx
mov edi, 0x700002bb
je 0x5093cf
mov al, 0x40
mov ecx, edx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jne 0x509052
jmp 0x5093cf
mov ebx, edx
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x4e8], eax
lea eax, [esp + 0xe8]
mov dword [esp], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007ce3c0
mov dword [esp + 0xe4], 0
mov dword [esp + 0xd0], 4
mov dword [esp + 0xd4], 2
mov eax, dword [ebp + 0xc]
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], esi
mov dword [esp + 0xe0], 0
lea eax, [esp + 0x4e8]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x10], eax
mov dword [esp + 0x24], 4
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x1b
mov dword [esp + 0xc], 0x16
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
xor ecx, ecx
xor edx, edx
call fcn.00551d40
test eax, eax
jne 0x5093e0
mov eax, dword [ebp + 0x20]
mov ecx, eax
or ecx, 0x4000000
mov dword [esp + 0x58], ecx
or eax, 0x6000000
mov dword [esp + 0x54], eax
test edi, edi
je 0x5090c6
mov eax, 0x7000002b
test esi, esi
je 0x5093e0
mov eax, dword [esp + 0x58]
mov dword [esp + 0xe0], eax
lea esi, [esp + 0xe4]
mov dword [esp + 0x10], esi
lea eax, [esp + 0xe8]
mov dword [esp + 0xc], eax
lea edi, [esp + 0xd0]
mov dword [esp], edi
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.005938f0
test eax, eax
jne 0x5093e0
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xc], eax
lea eax, [esp + 0xe8]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 4], eax
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0x38
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp], 4
mov edx, 0x18
mov ecx, dword [ebp + 8]
call fcn.00509b10
test eax, eax
jne 0x5093e0
lea eax, [esp + 0xe8]
mov ebx, eax
mov dword [esp], ebx
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov dword [esp + 0xe4], 0
mov eax, dword [esp + 0x54]
mov dword [esp + 0xe0], eax
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], ebx
mov dword [esp], edi
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.005938f0
test eax, eax
jne 0x5093e0
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x10], eax
lea eax, [esp + 0xe8]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 8], eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0x14
mov dword [esp], 6
mov edx, 0x1a
mov ecx, dword [ebp + 8]
call fcn.00553110
test eax, eax
jne 0x5093e0
jmp 0x5092a0
xor bl, 0xcc
mov eax, 0xe
movzx ecx, bl
cmp ecx, 0xc
jne 0x509095
mov eax, 0xf
mov esi, 0x7000002b
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x44], ecx
mov byte [esp + 0x58], cl
mov byte [esp + 0x53], cl
mov byte [esp + 0x54], cl
mov dword [esp + 0x38], edx
mov dword [esp + 0x34], edx
mov dword [esp + 0x30], edx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], edx
jmp 0x509495
mov dword [esp + 0xb4], 4
mov dword [esp + 0xb8], 2
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xc0], esi
mov dword [esp + 0xc4], 0xffffffce
mov edi, 0x7000002b
test esi, esi
je 0x5093cf
lea eax, [esp + 0xc8]
mov dword [esp + 8], eax
lea eax, [esp + 0xcc]
mov dword [esp + 4], eax
lea eax, [esp + 0xb4]
mov dword [esp], eax
call fcn.00593400
mov edi, eax
and eax, 1
inc eax
xor eax, edi
sete al
movzx eax, al
cmp edi, eax
jne 0x5093cf
mov ecx, dword [esp + 0xcc]
test ecx, ecx
jne 0x509297
mov eax, ecx
or eax, 2
mov dword [esp + 0x5c], ecx
xor ecx, 2
xor edi, edi
add ecx, eax
jne 0x5093cf
jmp 0x509396
mov al, 0x40
mov edi, 0x700002bb
test edx, edx
je 0x5093cf
movsx ecx, al
movzx eax, al
cmp ecx, 0x3f
jg 0x5091c1
cmp eax, 0x14
je 0x5091d8
cmp eax, 0x39
jne 0x5091ef
mov eax, dword [edx]
xor edi, edi
test eax, eax
je 0x5093cf
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
jne 0x509210
jmp 0x5093cf
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x38], ecx
mov dword [esp + 0x34], ecx
mov byte [esp + 0x58], cl
mov byte [esp + 0x53], cl
mov byte [esp + 0x54], cl
mov dword [esp + 0x30], ecx
mov dword [esp + 0x3c], ecx
mov edx, dword [esp + 0x4c]
jmp 0x50961e
mov eax, 0x700002bb
test ebx, ebx
je 0x5093e0
mov esi, dword [ebx]
test esi, esi
je 0x50928d
mov dword [esp + 0x5c], 0
nop word cs:[eax + eax]
mov edi, dword [esi + 0xc]
mov ecx, dword [edi]
cmp ecx, dword [esp + 0x58]
jne 0x509152
mov eax, dword [edi + 4]
mov ecx, dword [edi + 8]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 8], eax
mov dword [esp + 4], 4
mov dword [esp], 0x18
mov ecx, 0x33
mov edx, dword [ebp + 8]
call fcn.00552720
mov edx, 0xffffffff
test eax, eax
je 0x50914b
jmp 0x5093e0
mov eax, dword [esp + 0x5c]
mov bl, al
or bl, 1
mov ecx, dword [edi]
add edx, 1
jb 0x509140
jmp 0x509158
mov eax, dword [esp + 0x5c]
mov bl, al
cmp ecx, dword [esp + 0x54]
jne 0x50919a
mov eax, dword [edi + 4]
mov ecx, dword [edi + 8]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 8], eax
mov dword [esp + 4], 6
mov dword [esp], 0x1a
mov ecx, 0x32
mov edx, dword [ebp + 8]
call fcn.00552720
test eax, eax
jne 0x5093e0
or bl, 2
mov al, bl
mov dword [esp + 0x5c], eax
movzx eax, al
cmp eax, 3
je 0x5092a0
mov esi, dword [esi + 4]
test esi, esi
jne 0x5090f0
mov eax, 0x7000002f
jmp 0x5093e0
cmp eax, 0x40
je 0x5091d8
cmp eax, 0x71
jne 0x5091ef
mov eax, dword [edx]
xor edi, edi
test eax, eax
jne 0x509210
jmp 0x5093cf
mov eax, dword [edx]
xor edi, edi
test eax, eax
je 0x5093cf
xor ecx, ecx
test cl, cl
je 0x509210
jmp 0x5093cf
mov eax, dword [edx]
test eax, eax
jne 0x509210
mov ecx, eax
imul ecx, ecx
and ecx, 3
xor edi, edi
cmp ecx, 2
jb 0x5093cf
nop dword [eax + eax]
mov esi, dword [eax + 0xc]
mov ecx, dword [esi]
cmp ecx, 0xffffffce
jne 0x509225
mov edx, ecx
not edx
and edx, 1
add edx, ecx
jne 0x509241
mov eax, dword [eax + 4]
xor edi, edi
test eax, eax
je 0x5093cf
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
jne 0x509210
jmp 0x5093cf
mov eax, dword [esi + 8]
mov dword [esp + 0x58], eax
mov dword [esp + 0xc8], eax
mov dword [esp], eax
mov dword [esp + 4], 1
call fcn.00493840
mov dword [esp + 0xcc], eax
xor ebx, ebx
test eax, eax
jne 0x509364
mov ecx, 3
sub ecx, eax
xor ecx, eax
mov dword [esp + 0x5c], eax
mov edi, 0x70000003
jne 0x5093cf
jmp 0x50938c
mov eax, 0x7000002f
jmp 0x5093e0
mov dword [esp + 0x5c], ecx
jmp 0x509396
mov esi, dword [ebp + 0x20]
or esi, 0x5000000
lea eax, [esp + 0xe8]
mov dword [esp], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.007c51a0
mov dword [esp + 0xe4], 0
mov dword [esp + 0xe0], esi
call fcn.005959e0
test eax, eax
je 0x50935d
lea eax, [esp + 0xe4]
mov dword [esp + 0x10], eax
lea eax, [esp + 0xe8]
mov dword [esp + 0xc], eax
lea eax, [esp + 0xd0]
mov dword [esp], eax
mov dword [esp + 8], 0x400
mov dword [esp + 4], 0
call fcn.005938f0
test eax, eax
jne 0x50935d
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x10], eax
lea eax, [esp + 0xe8]
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x20]
mov dword [esp + 8], eax
mov dword [esp + 4], 5
mov dword [esp], 0x19
mov ecx, 0x31
mov edx, dword [ebp + 8]
call fcn.00552720
test eax, eax
jne 0x5093e0
xor eax, eax
jmp 0x5093e0
mov dword [esp + 0x5c], eax
jmp 0x50938c
inc ebx
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x58]
mov dword [esp + 8], ecx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
call fcn.007c51d0
test ebx, ebx
je 0x509370
mov al, 1
test al, al
je 0x509370
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0xffffffce
mov dword [esp + 4], 0xff
mov dword [esp], 0x26
mov ecx, 0x30
mov edx, dword [ebp + 8]
call fcn.00552720
mov edi, eax
mov eax, dword [esp + 0xcc]
mov dword [esp], eax
call fcn.004936c0
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, 0xb
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x80], eax
lea eax, [esp + 0xb0]
mov dword [esp + 4], eax
lea eax, [esp + 0x78]
mov dword [esp], eax
call fcn.00594ba0
test eax, eax
jne 0x50941f
mov edx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x48]
jmp 0x5095fe
mov eax, 0xe
mov esi, 0x70000007
jmp 0x5098ca
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xb0]
lea ecx, [esp + 0xac]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00595290
mov esi, 0x70000007
test eax, eax
mov edx, dword [esp + 0x4c]
jne 0x509a77
imul eax, eax
and eax, 3
cmp eax, 1
ja 0x509a77
mov ecx, dword [esp + 0xac]
test ecx, ecx
je 0x509a77
mov eax, ecx
not eax
and eax, 1
add eax, ecx
je 0x509a77
mov dword [esp + 0x40], ecx
mov eax, 0xe
mov cl, 0x5e
cmp eax, 0xe
jne 0x509539
mov edx, 3
sub edx, eax
xor edx, eax
je 0x509539
movzx eax, cl
cmp eax, 0x1b
jne 0x509577
xor eax, eax
lea ebx, [esp + 0x6c]
lea ecx, [esp + 0x70]
mov dword [esp + 0x38], ecx
lea ecx, [esp + 0x60]
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x90]
mov dword [esp + 0x30], ecx
lea ecx, [esp + 0x94]
mov dword [esp + 0x3c], ecx
mov byte [esp + 0x58], cl
mov byte [esp + 0x53], cl
mov byte [esp + 0x54], cl
jmp 0x509523
mov byte [esp + 0x54], 0x11
mov byte [esp + 0x53], 0x16
mov byte [esp + 0x58], 0x73
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sbb ecx, ecx
and ecx, 1
cmp eax, ecx
jb 0x509500
jmp 0x5095b0
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x80], eax
lea eax, [esp + 0xb0]
mov dword [esp + 4], eax
lea eax, [esp + 0x78]
mov dword [esp], eax
call fcn.00594ba0
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x5095b6
mov eax, dword [ebp + 0xc]
jmp 0x50942e
mov byte [esp + 0x54], 0x11
mov byte [esp + 0x53], 0x16
mov byte [esp + 0x58], 0x73
lea ebx, [esp + 0x6c]
lea eax, [esp + 0x70]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x60]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x94]
mov dword [esp + 0x3c], eax
mov edx, dword [esp + 0x4c]
jmp 0x5095c9
mov eax, 2
mov esi, 0x70000007
mov edx, dword [esp + 0x4c]
jmp 0x5099e7
mov eax, 7
mov ecx, dword [esp + 0x40]
mov edi, dword [ecx]
mov ecx, edi
and ecx, 1
inc ecx
xor ecx, edi
sete cl
movzx ecx, cl
cmp edi, ecx
je 0x509a99
mov eax, 0x1d
mov esi, 0x12
movzx ecx, byte [esp + 0x58]
cmp ecx, 0x23
jne 0x50961e
mov dword [esp + 0x4c], edx
cmp esi, 0xb
jne 0x509692
mov eax, esi
not eax
and eax, 1
add eax, esi
je 0x509692
mov eax, dword [ebp + 0xc]
jmp 0x50942e
mov dword [esp + 0x4c], edx
mov dword [esp + 0x48], ebx
cmp eax, 0xe
jne 0x50963a
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne 0x5093e8
mov byte [esp + 0x58], 0x23
mov esi, dword [esp + 0x48]
mov dword [esi], edi
mov eax, dword [esp + 0x38]
mov dword [eax], 0xfffffffe
lea eax, [esp + 0x84]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x90]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
mov dword [esp + 8], 0x1c
mov dword [esp + 4], 0
call fcn.005938f0
test eax, eax
mov edx, dword [esp + 0x4c]
mov ebx, esi
mov esi, eax
je 0x5096f2
jmp 0x509a77
mov byte [esp + 0x58], 0x73
mov dword [ebx], edi
mov eax, dword [esp + 0x38]
mov dword [eax], 0xfffffffe
lea eax, [esp + 0x84]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x90]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x34]
mov dword [esp], eax
mov dword [esp + 8], 0x1c
mov dword [esp + 4], 0
call fcn.005938f0
mov esi, eax
imul eax, eax
and eax, 3
cmp eax, 3
sete al
movzx eax, al
cmp esi, eax
mov edx, dword [esp + 0x4c]
jne 0x509a77
mov eax, 0xd
mov cl, byte [esp + 0x53]
movzx ecx, cl
cmp ecx, 0x16
jne 0x5099b8
mov byte [esp + 0x53], 0x16
mov esi, 0x7000002f
mov eax, dword [esp + 0x30]
cmp dword [eax], 0x636f6964
jne 0x509a77
jmp 0x5098ae
mov esi, edx
mov edi, 1
mov eax, dword [esp + 0xb0]
lea ecx, [esp + 0xac]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.00595290
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x50978b
mov ecx, dword [esp + 0xac]
test ecx, ecx
mov edx, esi
je 0x509797
mov eax, 8
mov dword [esp + 0x40], ecx
imul ecx, ecx
and ecx, 3
cmp ecx, 2
mov esi, 0x70000007
jb 0x509a5f
jmp 0x509853
mov edx, esi
mov esi, 0x70000007
jmp 0x509853
mov esi, 0x70000007
jmp 0x509853
mov ecx, dword [esp + 0xb0]
test ecx, ecx
je 0x509aea
mov eax, ecx
mov dword [esp + 0x5c], ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov dword [esp + 0x44], esi
je 0x509aea
mov dword [esp + 0x48], ebx
xor ebx, ebx
jmp 0x5097fb
mov edi, 0x17
add eax, ecx
setne al
movzx eax, al
add ebx, eax
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
call fcn.00595380
mov eax, ebx
or eax, 2
mov ecx, ebx
xor ecx, 2
mov edx, eax
add edx, ecx
setne dl
movzx edx, dl
cmp ebx, edx
jb 0x5097e0
mov ecx, esi
mov ebx, dword [esp + 0x48]
cmp edi, 8
je 0x509831
imul edi, edi
and edi, 3
cmp edi, 3
mov esi, dword [esp + 0x44]
jne 0x509aea
mov edx, dword [esp + 0xb0]
test edx, edx
je 0x509872
xor eax, eax
test al, al
jne 0x50987b
mov dword [esp + 0x5c], edx
mov edi, 0xe
mov dl, 0x77
mov dword [esp + 0x44], ecx
mov esi, ecx
mov eax, edi
or eax, 2
mov ecx, edi
xor ecx, 2
add ecx, eax
setne al
movzx eax, al
cmp edi, eax
jne 0x5097c9
jmp 0x509a77
mov esi, ecx
mov eax, esi
jmp 0x5093e0
mov esi, ecx
mov eax, esi
jmp 0x5093e0
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
mov esi, 0x7000002f
cmp eax, 0x636f6964
jne 0x509b03
mov byte [esp + 0x53], 0x21
imul eax, eax
and eax, 3
cmp eax, 2
jae 0x509a77
mov dword [esp + 0x4c], edx
mov dword [esp + 0x48], ebx
movzx eax, byte [esp + 0x54]
cmp eax, 0x1a
jne 0x5098dc
mov eax, 0x19
mov esi, 0x7000002f
cmp eax, 0xe
jne 0x509927
mov edx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x48]
jmp 0x509a77
mov byte [esp + 0x54], 0x1a
mov bl, 0x22
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
lea eax, [esp + 0x88]
mov dword [esp], eax
mov dword [esp + 8], 8
call fcn.007c51d0
mov eax, dword [esp + 0x8c]
xor eax, dword [ebp + 0x2c]
mov ecx, dword [esp + 0x88]
xor ecx, dword [ebp + 0x28]
or ecx, eax
jne 0x5099d5
mov edi, dword [ebp + 0x30]
mov edx, dword [esp + 0x4c]
jmp 0x509971
mov esi, 6
mov byte [esp + 0x54], 0x11
mov bl, 0x22
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], eax
lea eax, [esp + 0x88]
mov dword [esp], eax
mov dword [esp + 8], 8
call fcn.007c51d0
mov eax, dword [esp + 0x8c]
xor eax, dword [ebp + 0x2c]
mov ecx, dword [esp + 0x88]
xor ecx, dword [ebp + 0x28]
or ecx, eax
mov edi, dword [ebp + 0x30]
mov edx, dword [esp + 0x4c]
jne 0x50998b
movzx eax, bl
cmp eax, 0x22
je 0x509a04
mov esi, 0xd
cmp eax, 0x65
jne 0x509a49
cmp esi, 6
je 0x509af1
mov eax, esi
and eax, 1
inc eax
xor eax, esi
je 0x509afa
mov eax, 0x14
mov ecx, dword [esp + 0xac]
mov ecx, dword [ecx]
mov dword [edi], ecx
xor esi, esi
mov ebx, dword [esp + 0x48]
cmp eax, 0xd
jne 0x509a77
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne 0x509884
jmp 0x509a77
mov eax, 4
mov esi, 0x7000002f
mov edx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x48]
cmp eax, 2
jne 0x509726
imul eax, eax
and eax, 3
cmp eax, 2
jb 0x509a77
jmp 0x509726
mov esi, edx
xor eax, eax
mov ebx, dword [esp + 0x48]
jmp 0x509a2f
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
setne cl
movzx ecx, cl
add eax, ecx
mov ecx, dword [esp + 0xac]
mov ecx, dword [ecx]
mov dword [edi], ecx
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sbb ecx, ecx
and ecx, 1
cmp eax, ecx
jb 0x509a10
mov edx, esi
xor esi, esi
jmp 0x509a77
mov eax, 5
mov ecx, dword [esp + 0xac]
mov ecx, dword [ecx]
mov dword [edi], ecx
xor esi, esi
mov ebx, dword [esp + 0x48]
cmp eax, 5
jne 0x5095c9
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x5095c9
mov eax, 4
movzx ecx, dl
cmp ecx, 0x2d
je 0x509acd
mov edi, 8
mov eax, 0xb
cmp ecx, 0x77
mov ecx, esi
je 0x509819
cmp eax, 7
jne 0x509aaf
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
jne 0x509726
mov eax, dword [esp + 0xb0]
test eax, eax
je 0x509aea
mov dword [esp + 0x5c], eax
mov eax, 0xb
xor ecx, ecx
test cl, cl
mov dword [esp + 0x44], esi
jne 0x509aea
cmp eax, 4
jne 0x5097c9
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne 0x5097a1
jmp 0x5097c9
mov eax, esi
jmp 0x5093e0
mov ebx, dword [esp + 0x48]
jmp 0x509726
mov ebx, dword [esp + 0x48]
jmp 0x509726
mov byte [esp + 0x53], 0x21
jmp 0x509a77