Function at 0x4d89f0
Capabilities:
Encode data using xor
Encrypt data using speck

Disassembly:
sub esp, 0x18
push ebx
push ebp
push esi
mov esi, dword [esp + 0x2c]
xor cl, cl
push edi
mov edi, dword [esp + 0x2c]
xorps xmm0, xmm0
movlpd qword [esp + 0x20], xmm0
mov dword [esp + 0x14], 0
mov byte [esp + 0x13], cl
mov ebp, dword [edi + 0x18]
imul edx, ebp, 0x64
mov dword [esp + 0x2c], edx
cmp byte [edx + 0x5237fb], cl
jbe 0x4d8adb
movzx eax, byte [edx + 0x5237fb]
mov eax, dword [edi + eax*4 + 0x30]
mov ecx, eax
and ecx, 0x7f
cmp ecx, 0x1b
je 0x4d8a58
cmp ecx, 0x1a
je 0x4d8a58
cmp ecx, 0x1c
je 0x4d8a58
cmp ecx, 0x1d
je 0x4d8a58
xor dl, dl
mov byte [esp + 0x13], dl
jmp 0x4d8a5d
mov byte [esp + 0x13], 1
cmp ecx, 0x40
jb 0x4d8a71
cmp ecx, 0x5f
ja 0x4d8a71
lea ecx, [eax - 0x40]
xor ecx, eax
and ecx, 0x7f
xor eax, ecx
mov ebx, eax
and ebx, 0x7f
cmp ebx, 0x60
jb 0x4d8b13
cmp ebx, 0x6f
ja 0x4d8b13
mov ecx, eax
mov edx, eax
shr ecx, 0x19
shr edx, 7
and ecx, 1
and edx, 0x3f
inc ecx
add edx, ecx
shr edx, 1
lea ecx, [ebx + edx]
cmp ecx, 0x80
jne 0x4d8aad
or ebx, 0xffffffff
jmp 0x4d8abb
lea ecx, [edx + eax]
mov ebx, 1
and ecx, 0x1f
shl ebx, cl
dec ebx
and eax, 0x1f
mov edx, 1
mov ecx, eax
shl edx, cl
mov cl, byte [esp + 0x13]
dec edx
not edx
and edx, ebx
movzx eax, dx
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x14], eax
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x24]
mov eax, dword [edi + 0x18]
cmp eax, 0x124
jg 0x4d8e7c
je case.0x4d8e93.293
sub eax, 0x22
cmp eax, 0xf5
ja case.0x4d8e93.294
movzx eax, byte [eax + 0x4d95f4]
jmp dword [eax*4 + 0x4d95b0]
mov ecx, dword [esi + 0x14]
mov edx, eax
shr edx, 7
and edx, 0x3f
cmp byte [ecx + 0xb9], 0
je case.0x4d8b44.21
cmp ebp, 0x132
jne 0x4d8b35
cmp byte [esi + 0x44], 0
je case.0x4d8b44.21
lea ecx, [ebx - 0x11]
cmp ecx, 0xa
ja case.0x4d8b44.21
movzx ecx, byte [ecx + 0x4d96f4]
jmp dword [ecx*4 + 0x4d96ec]
add edx, 3
shr edx, 2
lea ecx, [ebx + edx]
cmp ecx, 0x40
jne 0x4d8b61
or edx, 0xffffffff
or ecx, 0xffffffff
jmp 0x4d8b88
lea ecx, [edx + eax]
xor ebp, ebp
and ecx, 0x3f
xor edx, edx
bts edx, ecx
cmp ecx, 0x20
cmovae ebp, edx
xor edx, ebp
cmp ecx, 0x40
cmovae ebp, edx
add edx, 0xffffffff
adc ebp, 0xffffffff
mov dword [esp + 0x18], ebp
mov ecx, ebp
cmp ebx, 0x40
jne 0x4d8ba8
or ebx, 0xffffffff
or ebp, 0xffffffff
not ebx
not ebp
and ebx, edx
mov edx, dword [esp + 0x2c]
and ebp, ecx
mov cl, byte [esp + 0x13]
jmp 0x4d8ae3
xor ebx, ebx
xor ebp, ebp
and eax, 0x3f
bts ebx, eax
cmp eax, 0x20
cmovae ebp, ebx
xor ebx, ebp
cmp eax, 0x40
cmovae ebp, ebx
add ebx, 0xffffffff
not ebx
adc ebp, 0xffffffff
and ebx, edx
mov edx, dword [esp + 0x2c]
not ebp
and ebp, ecx
mov cl, byte [esp + 0x13]
jmp 0x4d8ae3
movups xmm0, xmmword [edi + 0x58]
xor ecx, ecx
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 1
cmovne eax, ecx
push eax
call fcn.0040fdc0
mov edi, eax
push dword [edi + 8]
call fcn.0045f850
add esp, 8
movzx eax, word [eax + 6]
and eax, 0xf
cmp eax, 8
je 0x4d8c1b
cmp eax, 9
jne 0x4d95a5
or dword [edi + 0x14], 0x40
or byte [esi + 0x140], 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
movzx eax, byte [edx + 0x5237e3]
mov eax, dword [edi + eax*4 + 0x30]
cmp eax, 8
je 0x4d8c47
cmp eax, 9
jne 0x4d95a5
or byte [esi + 0x140], 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
xor edx, edx
cmp dword [edi + 0x18], 0xef
sete dl
xor eax, eax
inc edx
xor ecx, ecx
bts eax, edx
cmp edx, 0x20
cmovae ecx, eax
xor eax, ecx
cmp edx, 0x40
cmovae ecx, eax
or dword [esi + 0x50], eax
or dword [esi + 0x54], ecx
push dword [edi + 0x18]
call fcn.0040a550
push dword [edi + 0x18]
shr eax, 5
lea esi, [esi + eax*4]
call fcn.0040a550
mov ecx, dword [esi + 0x70]
add esp, 8
and eax, 0x1f
bts ecx, eax
mov dword [esi + 0x70], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
movzx eax, byte [edx + 0x5237df]
mov eax, dword [edi + eax*4 + 0x30]
cmp eax, 1
je 0x4d8cd7
test eax, eax
je 0x4d8cd7
cmp eax, 3
jne 0x4d95a5
or dword [esi + 0x74], 0x4000000
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
or dword [esi + 0x74], 0x400000
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
movzx eax, byte [edx + 0x5237df]
mov eax, dword [edi + eax*4 + 0x30]
cmp eax, 1
je 0x4d8d12
test eax, eax
je 0x4d8d12
cmp eax, 3
jne 0x4d95a5
or dword [esi + 0x74], 0x8000000
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
or dword [esi + 0x74], 0x1000000
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
movzx eax, byte [edx + 0x5237df]
mov eax, dword [edi + eax*4 + 0x30]
cmp eax, 1
je 0x4d8d43
test eax, eax
je 0x4d8d43
cmp eax, 3
jne 0x4d8d4a
or dword [esi + 0x74], 0x10000000
jmp 0x4d8d4a
or dword [esi + 0x74], 0x800000
cmp byte [esi + 0x44], 4
jne 0x4d95a5
or byte [esi + 0x140], 0x80
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
movzx eax, byte [edx + 0x5237df]
mov eax, dword [edi + eax*4 + 0x30]
cmp eax, 1
je 0x4d8d8f
test eax, eax
je 0x4d8d8f
cmp eax, 3
jne 0x4d95a5
or dword [esi + 0x74], 0x80000000
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
or dword [esi + 0x74], 0x40000000
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
or byte [esi + 0x14b], 8
imul eax, dword [edi + 0x18], 0x64
mov dl, byte [esi + 0x14b]
movzx ecx, dl
and dl, 0xf
shr ecx, 4
movzx eax, byte [eax + 0x5237d7]
mov eax, dword [edi + eax*4 + 0x30]
bts ecx, eax
shl cl, 4
pop edi
or cl, dl
mov byte [esi + 0x14b], cl
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
movzx eax, byte [edx + 0x5237fa]
mov ebx, 2
mov cl, byte [esi + 0x13b]
movzx edx, cl
cmp dword [edi + eax*4 + 0x30], 0
mov eax, 1
cmovne edx, eax
xor dl, cl
and dl, al
xor dl, cl
mov byte [esi + 0x13b], dl
imul eax, dword [edi + 0x18], 0x64
movzx ecx, dl
movzx eax, byte [eax + 0x5237f9]
cmp dword [edi + eax*4 + 0x30], 0
pop edi
cmovne ecx, ebx
xor cl, dl
and cl, bl
xor cl, dl
mov byte [esi + 0x13b], cl
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
xor ebx, ebx
add esi, 0x148
nop dword [eax]
push ebx
push dword [edi + 0x64]
call fcn.00409ec0
add esp, 8
mov ecx, dword [eax]
cmp dword [ecx + 0xc], 5
jne 0x4d8e6b
movzx eax, byte [eax + 0x11]
push eax
push dword [ecx + edx*8 + 0x34]
push dword [ecx + edx*8 + 0x30]
call fcn.00407cd0
add esp, 0xc
mov dword [esi], eax
inc ebx
add esi, 4
cmp ebx, 3
jb 0x4d8e40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
sub eax, 0x125
cmp eax, 0x166
ja case.0x4d8e93.294
movzx eax, byte [eax + 0x4d972c]
jmp dword [eax*4 + 0x4d9700]
cmp byte [esi + 0x44], 4
jne 0x4d95a5
or byte [esi + 0x140], 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
movups xmm0, xmmword [edi + 0x58]
psrldq xmm0, 0xc
movd eax, xmm0
mov ebp, dword [eax]
xor eax, eax
cmp dword [ebp + 0xc], 1
cmovne ebp, eax
mov dword [esp + 0x1c], ebp
test byte [ebp + 0x1c], 0xc
je 0x4d90f2
push ebp
call fcn.0040fdc0
mov ebx, eax
add esp, 4
xor al, al
mov ecx, dword [ebx + 0x10]
and ecx, 0x3ffff
cmp ecx, 8
jne 0x4d8f06
cmp dword [edi + 0x18], 0xff
mov ecx, 1
movzx eax, al
cmove eax, ecx
mov byte [esp + 0x20], al
mov eax, dword [ebx + 8]
mov dword [esp + 0x2c], eax
movsx eax, byte [esi + 0x44]
push eax
push ebx
call fcn.00410a80
add esp, 8
mov byte [esp + 0x14], al
cmp byte [esi + 0x44], 7
sete byte [esp + 0x18]
test al, al
je 0x4d8f40
push dword [esp + 0x2c]
call fcn.0045ca00
add esp, 4
mov dword [esp + 0x2c], eax
test dword [ebx + 0x1c], 0x8000
jne 0x4d8fe0
push dword [esp + 0x18]
push dword [esp + 0x18]
push ebx
push ebp
call fcn.004d98b0
add esp, 0x10
mov dword [esp + 0x14], eax
cmp eax, 0xffffffff
je 0x4d8fe0
test byte [ebx + 0x14], 0x20
je 0x4d8f8d
push dword [esp + 0x2c]
call fcn.0045da20
mov ecx, dword [ebx + 0x14]
add eax, 3
shr ecx, 3
add esp, 4
and ecx, 3
add eax, ecx
shr eax, 2
jmp 0x4d8f9d
push 1
push 0
push dword [esp + 0x34]
call fcn.0045c8b0
add esp, 0xc
cmp dword [esp + 0x14], eax
jae 0x4d8fe0
test byte [ebx + 0x14], 0x20
je 0x4d8fcc
mov eax, dword [ebp + 0x18]
sub eax, 0
je 0x4d8fbb
mov eax, 1
jmp 0x4d9064
push dword [ebp + 0x20]
push ebx
call fcn.004da110
add esp, 8
jmp 0x4d9064
push 1
push 0
push dword [ebp + 0x20]
call fcn.0045c8b0
add esp, 0xc
jmp 0x4d9064
movsx eax, byte [esi + 0x44]
mov ebp, dword [ebx + 8]
push eax
push ebx
call fcn.00410a80
add esp, 8
test al, al
jne 0x4d900a
cmp byte [esi + 0x44], 7
jne 0x4d9015
cmp dword [ebx + 0x2c], 0x1b
jne 0x4d9015
test dword [ebx + 0x1c], 0x10000
jne 0x4d9015
push ebp
call fcn.0045ca00
add esp, 4
mov ebp, eax
test dword [ebx + 0x1c], 0x8000
je 0x4d9029
push ebp
call fcn.0045ca00
add esp, 4
mov ebp, eax
test byte [ebx + 0x14], 0x20
je 0x4d904b
push ebp
call fcn.0045da20
mov ecx, dword [ebx + 0x14]
add esp, 4
shr ecx, 3
and ecx, 3
add ecx, 3
add eax, ecx
shr eax, 2
jmp 0x4d9058
push 1
push 0
push ebp
call fcn.0045c8b0
add esp, 0xc
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x14], 0
push dword [esp + 0x20]
mov edx, ebx
mov ecx, esi
push ebp
push eax
push dword [esp + 0x20]
push edx
push ecx
call fcn.004da150
add esp, 0x18
cmp byte [esi + 0x44], 0
jne 0x4d90f2
mov eax, dword [ebx + 0x10]
and eax, 0x3ffff
cmp eax, 4
jne 0x4d90f2
push dword [ebx + 8]
call fcn.0045f850
push eax
call fcn.0045f4b0
add esp, 8
test al, al
je 0x4d90f2
push 1
xor ebp, ebp
push ebp
push dword [ebx + 8]
call fcn.0045c8b0
add esp, 0xc
test eax, eax
je 0x4d90f2
mov edx, dword [ebx + 0x2c]
xor eax, eax
add edx, ebp
xor ecx, ecx
bts eax, edx
cmp edx, 0x20
push 1
cmovae ecx, eax
xor eax, ecx
cmp edx, 0x40
push 0
cmovae ecx, eax
or dword [esi + 0x140], eax
or dword [esi + 0x144], ecx
inc ebp
push dword [ebx + 8]
call fcn.0045c8b0
add esp, 0xc
cmp ebp, eax
jb 0x4d90b8
push edi
call fcn.004d9a60
add esp, 4
test al, al
je 0x4d95a5
or byte [esi + 0x13a], 0x40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
cmp byte [esi + 0x44], 2
lea ecx, [esi + 0x44]
jne 0x4d9162
cmp dword [edi + 0x18], 0x132
jne 0x4d9162
cmp byte [esp + 0x13], 0
jne 0x4d9162
or dword [esi + 0xa4], ebx
push edi
call fcn.004103f0
add esp, 4
movups xmm0, xmmword [eax]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
je 0x4d915a
or dword [esi + 0xc0], ebx
or dword [esi + 0xc4], ebp
lea eax, [esi + 0x44]
jmp 0x4d91ef
or dword [esi + 0x50], ebx
or dword [esi + 0x54], ebp
imul eax, dword [edi + 0x18], 0x64
mov dword [esp + 0x2c], ecx
movzx eax, byte [eax + 0x5237fb]
test dword [edi + eax*4 + 0x30], 0x8000000
je 0x4d918e
or dword [esi + 0x58], ebx
lea eax, [esi + 0x44]
or dword [esi + 0x5c], ebp
mov dword [esp + 0x2c], eax
imul eax, dword [edi + 0x18], 0x64
movzx eax, byte [eax + 0x5237fb]
cmp dword [edi + eax*4 + 0x30], 0
jge 0x4d91ac
or dword [esi + 0x80], ebx
or dword [esi + 0x84], ebp
mov ecx, dword [esp + 0x14]
or word [esi + 0x98], cx
push edi
call fcn.004103f0
add esp, 4
movups xmm0, xmmword [eax]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
je 0x4d91eb
or dword [esi + 0xb0], ebx
or dword [esi + 0xb4], ebp
mov eax, dword [esp + 0x14]
or word [esi + 0x9e], ax
mov eax, dword [esp + 0x2c]
cmp byte [eax], 1
jne 0x4d95a5
cmp dword [edi + 0x18], 0x158
jne 0x4d95a5
push edi
call fcn.004103a0
push eax
call fcn.004da460
add esp, 8
test al, al
jne 0x4d95a5
or dword [esi + 0x150], ebx
or dword [esi + 0x154], ebp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
cmp byte [esi + 0x44], 1
jne 0x4d9286
cmp dword [edi + 0x18], 0x153
jne 0x4d9286
test cl, cl
jne 0x4d9286
or dword [esi + 0xac], ebx
push edi
call fcn.004103f0
add esp, 4
lea edx, [esi + 0x44]
mov dword [esp + 0x2c], edx
movups xmm0, xmmword [eax]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
je 0x4d9280
or dword [esi + 0xc8], ebx
lea eax, [esi + 0x44]
or dword [esi + 0xcc], ebp
mov dword [esp + 0x2c], eax
mov ecx, dword [esp + 0x2c]
jmp 0x4d92d8
mov eax, dword [esp + 0x14]
or dword [esi + 0x68], ebx
or dword [esi + 0x6c], ebp
or word [esi + 0x9c], ax
push edi
call fcn.004103f0
lea edx, [esi + 0x44]
add esp, 4
mov ecx, edx
mov dword [esp + 0x2c], ecx
movups xmm0, xmmword [eax]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
je 0x4d92d8
or dword [esi + 0xb8], ebx
or dword [esi + 0xbc], ebp
mov eax, dword [esp + 0x14]
or word [esi + 0xa0], ax
mov dword [esp + 0x2c], ecx
cmp byte [edx], 1
mov eax, ecx
mov dword [esp + 0x14], eax
jne 0x4d9324
cmp dword [edi + 0x18], 0x159
mov dword [esp + 0x14], eax
jne 0x4d9324
push edi
mov dword [esp + 0x18], ecx
call fcn.004103a0
push eax
call fcn.004da460
mov ecx, dword [esp + 0x34]
add esp, 8
test al, al
jne 0x4d9320
or dword [esi + 0x158], ebx
lea eax, [esi + 0x44]
or dword [esi + 0x15c], ebp
mov dword [esp + 0x14], eax
jmp 0x4d9324
mov eax, dword [esp + 0x14]
cmp byte [ecx], 7
jne 0x4d936c
mov edx, dword [edi + 0x18]
cmp edx, 0x159
je 0x4d933e
mov ecx, eax
cmp edx, 0x157
jne 0x4d936c
push edi
mov dword [esp + 0x30], eax
call fcn.004103a0
push eax
push esi
call fcn.004da4a0
add esp, 0xc
test al, al
jne 0x4d9368
or dword [esi + 0x140], ebx
or dword [esi + 0x144], ebp
mov ecx, dword [esp + 0x14]
jmp 0x4d936c
mov ecx, dword [esp + 0x2c]
cmp byte [ecx], 4
jne 0x4d95a5
imul eax, dword [edi + 0x18], 0x64
movzx eax, byte [eax + 0x5237fb]
test dword [edi + eax*4 + 0x30], 0x4000
je 0x4d95a5
or byte [esi + 0x140], 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
cmp byte [esi + 0x44], 1
lea eax, [esi + 0x44]
mov dword [esp + 0x2c], eax
jne 0x4d93eb
cmp dword [edi + 0x18], 0x263
jne 0x4d93eb
test cl, cl
jne 0x4d93eb
or dword [esi + 0xa8], ebx
push edi
call fcn.004103f0
add esp, 4
movups xmm0, xmmword [eax]
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
je 0x4d93e6
or dword [esi + 0xc8], ebx
or dword [esi + 0xcc], ebp
lea eax, [esi + 0x44]
jmp 0x4d9465
mov ecx, dword [esp + 0x14]
or dword [esi + 0x60], ebx
or dword [esi + 0x64], ebp
or word [esi + 0x9a], cx
cmp dword [edi + 0x18], 0x264
mov dword [esp + 0x18], eax
jne 0x4d941c
or dword [esi + 0x88], ebx
lea eax, [esi + 0x44]
or dword [esi + 0x8c], ebp
mov dword [esp + 0x18], eax
push edi
call fcn.004103f0
add esp, 4
movups xmm0, xmmword [eax]
lea eax, [esi + 0x44]
mov dword [esp + 0x2c], eax
psrldq xmm0, 0xc
movd eax, xmm0
mov eax, dword [eax]
cmp dword [eax + 0xc], 5
je 0x4d9461
mov eax, dword [esp + 0x14]
or dword [esi + 0xb8], ebx
or dword [esi + 0xbc], ebp
or word [esi + 0xa0], ax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x2c], eax
jmp 0x4d9465
mov eax, dword [esp + 0x2c]
cmp byte [eax], 7
jne 0x4d949b
mov eax, dword [edi + 0x18]
cmp eax, 0x265
je 0x4d947b
cmp eax, 0x264
jne 0x4d949b
push edi
call fcn.004103a0
push eax
push esi
call fcn.004da4a0
add esp, 0xc
test al, al
jne 0x4d949b
or dword [esi + 0x140], ebx
or dword [esi + 0x144], ebp
mov ebx, dword [esp + 0x2c]
cmp byte [ebx], 4
jne 0x4d95a5
imul eax, dword [edi + 0x18], 0x64
movzx eax, byte [eax + 0x5237fb]
test dword [edi + eax*4 + 0x30], 0x2000
je 0x4d95a5
or byte [esi + 0x140], 8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
cmp byte [esi + 0x44], 4
jne 0x4d95a5
or byte [esi + 0x140], 0x40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
cmp byte [esi + 0x44], 4
mov byte [esi + 0x129], 1
jne 0x4d95a5
mov al, byte [esi + 0x140]
test al, 0x10
je 0x4d95a5
pop edi
or al, 0x40
mov byte [esi + 0x140], al
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
mov eax, dword [esi + 0x64]
or dword [esi + 0x60], 3
pop edi
mov dword [esi + 0x64], eax
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
mov eax, dword [esi + 0x64]
or dword [esi + 0x60], 8
pop edi
mov dword [esi + 0x64], eax
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
mov eax, dword [edi + 0x18]
add eax, 0xffffffd1
cmp eax, 0xf
ja case.0x4d954e.51
movzx eax, byte [eax + 0x4d989c]
jmp dword [eax*4 + 0x4d9894]
mov al, 4
jmp 0x4d955b
xor al, al
or byte [esi + 0x13b], al
push edi
call fcn.004d9a60
add esp, 4
test al, al
je 0x4d9575
or byte [esi + 0x13a], 0x40
mov eax, dword [edi + 0x18]
cmp eax, 0xa6
je 0x4d959e
cmp eax, 0xa4
je 0x4d959e
cmp eax, 0x99
je 0x4d959e
cmp eax, 0x97
je 0x4d959e
cmp eax, 0x39
je 0x4d959e
cmp eax, 0x37
jne 0x4d95a5
or byte [esi + 0x137], 0x20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret